def main():

    from collections import deque

    N, X, Y = (int(i) for i in input().split())

    X -= 1

    Y -= 1

    edge = [[] for _ in range(N)]

    for i in range(N-1):

        edge[i].append(i+1)

        edge[i+1].append(i)

    edge[X].append(Y)

    edge[Y].append(X)



    def bfs(s):

        d = [-1 for _ in range(N)]

        que = deque()

        d[s] = 0

        que.append(s)

        while que:

            u = que.popleft()

            for v in edge[u]:

                if d[v] != -1:

                    continue

                d[v] = d[u] + 1

                que.append(v)

        return d



    dist = [[] for _ in range(N)]

    for i in range(N):

        dist[i] = bfs(i)

    cnt = [0]*N

    for i in range(N):

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

            cnt[dist[i][j]] += 1

    for c in cnt[1:]:

        print(c)





if __name__ == '__main__':

    main()

def main():

    N, X, Y = (int(i) for i in input().split())

    cnt = [0]*N

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

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

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

            cnt[d] += 1

    for d in cnt[1:]:

        print(d)





if __name__ == '__main__':

    main()

def main():
    from collections import deque

    N, X, Y = (int(i) for i in input().split())
    X -= 1
    Y -= 1
    edge = [[] for _ in range(N)]
    for i in range(N - 1):
        edge[i].append(i + 1)
        edge[i + 1].append(i)
    edge[X].append(Y)
    edge[Y].append(X)

    def bfs(s):
        d = [-1 for _ in range(N)]
        que = deque()
        d[s] = 0
        que.append(s)
        while que:
            u = que.popleft()
            for v in edge[u]:
                if d[v] != -1:
                    continue
                d[v] = d[u] + 1
                que.append(v)
        return d

    dist = [[] for _ in range(N)]
    for i in range(N):
        dist[i] = bfs(i)
    cnt = [0] * N
    for i in range(N):
        for j in range(i + 1, N):
            cnt[dist[i][j]] += 1
    for c in cnt[1:]:
        print(c)


if __name__ == "__main__":
    main()

def main():
    N, X, Y = (int(i) for i in input().split())
    cnt = [0] * N
    for i in range(1, N + 1):
        for j in range(i + 1, N + 1):
            d = min(
                abs(i - j),
                abs(i - X) + 1 + abs(j - Y),
                abs(i - X) + abs(X - Y) + abs(j - Y),
            )
            cnt[d] += 1
    for d in cnt[1:]:
        print(d)


if __name__ == "__main__":
    main()

-    from collections import deque - -    X -= 1 -    Y -= 1 -    edge = [[] for _ in range(N)] -    for i in range(N - 1): -        edge[i].append(i + 1) -        edge[i + 1].append(i) -    edge[X].append(Y) -    edge[Y].append(X) - -    def bfs(s): -        d = [-1 for _ in range(N)] -        que = deque() -        d[s] = 0 -        que.append(s) -        while que: -            u = que.popleft() -            for v in edge[u]: -                if d[v] != -1: -                    continue -                d[v] = d[u] + 1 -                que.append(v) -        return d - -    dist = [[] for _ in range(N)] -    for i in range(N): -        dist[i] = bfs(i) -    for i in range(N): -        for j in range(i + 1, N): -            cnt[dist[i][j]] += 1 -    for c in cnt[1:]: -        print(c) +    for i in range(1, N + 1): +        for j in range(i + 1, N + 1): +            d = min( +                abs(i - j), +                abs(i - X) + 1 + abs(j - Y), +                abs(i - X) + abs(X - Y) + abs(j - Y), +            ) +            cnt[d] += 1 +    for d in cnt[1:]: +        print(d)