import sys

import numpy as np

import itertools

import collections

from collections import deque

from scipy.sparse.csgraph import shortest_path, floyd_warshall, dijkstra, bellman_ford, johnson

from scipy.sparse import csr_matrix



sys.setrecursionlimit(10**6)

readline = sys.stdin.readline



# input

N, X, Y = [int(i) for i in readline().split()]



# graph

Graph = np.array([[0] * N for i in range(N)])

for i in range(N):

    if i-1 < 0:

        Graph[i, i+1] = 1

    elif N <= i+1:

        Graph[i, i-1] = 1

    else:

        Graph[i, i-1] = 1

        Graph[i, i+1] = 1



Graph[X-1, Y-1] = 1

Graph[Y-1, X-1] = 1



#print(Graph)



spath = shortest_path(Graph)

spathu = np.triu(spath)



#c = collections.Counter()

#for j in range(N-1):

#    c += collections.Counter(spath[j, j+1:])



def flatten_2dim(array):

    return [item for sublist in array for item in sublist]



c = collections.Counter(flatten_2dim(spathu))



#print(tmp)

#count = collections.Counter(tmp)



for i in range(1, N):

    print((c.get(i, 0)))



import collections



def cmd():

    N, X, Y = list(map(int, input().split()))



    X -= 1

    Y -= 1

    distance = []

    dappend = distance.append



    for i in range(N-1):

        for j in range(i+1,N):

            tmp = min(abs(i-j), abs(X-i) + 1 + abs(Y-j), abs(Y-i) + 1 + abs(X-j))

            distance.append(tmp)



    count = collections.Counter(distance)



    for s in range(1, N):

        print((count.get(s, 0)))



if __name__ == "__main__":

    cmd()

import sys
import numpy as np
import itertools
import collections
from collections import deque
from scipy.sparse.csgraph import (
    shortest_path,
    floyd_warshall,
    dijkstra,
    bellman_ford,
    johnson,
)
from scipy.sparse import csr_matrix

sys.setrecursionlimit(10**6)
readline = sys.stdin.readline
# input
N, X, Y = [int(i) for i in readline().split()]
# graph
Graph = np.array([[0] * N for i in range(N)])
for i in range(N):
    if i - 1 < 0:
        Graph[i, i + 1] = 1
    elif N <= i + 1:
        Graph[i, i - 1] = 1
    else:
        Graph[i, i - 1] = 1
        Graph[i, i + 1] = 1
Graph[X - 1, Y - 1] = 1
Graph[Y - 1, X - 1] = 1
# print(Graph)
spath = shortest_path(Graph)
spathu = np.triu(spath)
# c = collections.Counter()
# for j in range(N-1):
#    c += collections.Counter(spath[j, j+1:])
def flatten_2dim(array):
    return [item for sublist in array for item in sublist]


c = collections.Counter(flatten_2dim(spathu))
# print(tmp)
# count = collections.Counter(tmp)
for i in range(1, N):
    print((c.get(i, 0)))

import collections


def cmd():
    N, X, Y = list(map(int, input().split()))
    X -= 1
    Y -= 1
    distance = []
    dappend = distance.append
    for i in range(N - 1):
        for j in range(i + 1, N):
            tmp = min(
                abs(i - j), abs(X - i) + 1 + abs(Y - j), abs(Y - i) + 1 + abs(X - j)
            )
            distance.append(tmp)
    count = collections.Counter(distance)
    for s in range(1, N):
        print((count.get(s, 0)))


if __name__ == "__main__":
    cmd()

-import sys -import numpy as np -import itertools -from collections import deque -from scipy.sparse.csgraph import ( -    shortest_path, -    floyd_warshall, -    dijkstra, -    bellman_ford, -    johnson, -) -from scipy.sparse import csr_matrix - -sys.setrecursionlimit(10**6) -readline = sys.stdin.readline -# input -N, X, Y = [int(i) for i in readline().split()] -# graph -Graph = np.array([[0] * N for i in range(N)]) -for i in range(N): -    if i - 1 < 0: -        Graph[i, i + 1] = 1 -    elif N <= i + 1: -        Graph[i, i - 1] = 1 -    else: -        Graph[i, i - 1] = 1 -        Graph[i, i + 1] = 1 -Graph[X - 1, Y - 1] = 1 -Graph[Y - 1, X - 1] = 1 -# print(Graph) -spath = shortest_path(Graph) -spathu = np.triu(spath) -# c = collections.Counter() -# for j in range(N-1): -#    c += collections.Counter(spath[j, j+1:]) -def flatten_2dim(array): -    return [item for sublist in array for item in sublist] -c = collections.Counter(flatten_2dim(spathu)) -# print(tmp) -# count = collections.Counter(tmp) -for i in range(1, N): -    print((c.get(i, 0))) +def cmd(): +    N, X, Y = list(map(int, input().split())) +    X -= 1 +    Y -= 1 +    distance = [] +    dappend = distance.append +    for i in range(N - 1): +        for j in range(i + 1, N): +            tmp = min( +                abs(i - j), abs(X - i) + 1 + abs(Y - j), abs(Y - i) + 1 + abs(X - j) +            ) +            distance.append(tmp) +    count = collections.Counter(distance) +    for s in range(1, N): +        print((count.get(s, 0))) + + +if __name__ == "__main__": +    cmd()