def main():

    from collections import deque



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

    X -= 1

    Y -= 1



    g = tuple(set() for _ in range(N))

    for v in range(N):

        if v > 0:

            g[v].add(v - 1)

        if v < N - 1:

            g[v].add(v + 1)



    g[X].add(Y)

    g[Y].add(X)



    ctr = [0] * N

    for v in range(N):

        dist = [-1] * N



        q = deque()

        q.append((v, 0))



        while q:

            v, d = q.popleft()

            if ~dist[v] and dist[v] < d: continue

            dist[v] = d

            for u in g[v]:

                if ~dist[u]: continue

                dist[u] = d + 1

                q.append((u, d + 1))



        for d in dist:

            ctr[d] += 1



    print(*map(lambda x: x // 2, ctr[1:]), sep='\n')





if __name__ == '__main__':

    main()

# https://atcoder.jp/contests/abc160/submissions/11310424



def main():

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

    X -= 1

    Y -= 1



    def dist(a, b):

        return min(

            abs(a - b),

            abs(a - X) + abs(b - Y) + 1,

            abs(a - Y) + abs(b - X) + 1

        )



    ctr = [0] * N

    for b in range(N):

        for a in range(b):

            d = dist(a, b)

            ctr[d] += 1



    print(*ctr[1:], sep='\n')





if __name__ == '__main__':

    main()

def main():
    from collections import deque

    N, X, Y = map(int, input().split())
    X -= 1
    Y -= 1
    g = tuple(set() for _ in range(N))
    for v in range(N):
        if v > 0:
            g[v].add(v - 1)
        if v < N - 1:
            g[v].add(v + 1)
    g[X].add(Y)
    g[Y].add(X)
    ctr = [0] * N
    for v in range(N):
        dist = [-1] * N
        q = deque()
        q.append((v, 0))
        while q:
            v, d = q.popleft()
            if ~dist[v] and dist[v] < d:
                continue
            dist[v] = d
            for u in g[v]:
                if ~dist[u]:
                    continue
                dist[u] = d + 1
                q.append((u, d + 1))
        for d in dist:
            ctr[d] += 1
    print(*map(lambda x: x // 2, ctr[1:]), sep="\n")


if __name__ == "__main__":
    main()

# https://atcoder.jp/contests/abc160/submissions/11310424
def main():
    N, X, Y = map(int, input().split())
    X -= 1
    Y -= 1

    def dist(a, b):
        return min(abs(a - b), abs(a - X) + abs(b - Y) + 1, abs(a - Y) + abs(b - X) + 1)

    ctr = [0] * N
    for b in range(N):
        for a in range(b):
            d = dist(a, b)
            ctr[d] += 1
    print(*ctr[1:], sep="\n")


if __name__ == "__main__":
    main()

+# https://atcoder.jp/contests/abc160/submissions/11310424 -    from collections import deque - -    g = tuple(set() for _ in range(N)) -    for v in range(N): -        if v > 0: -            g[v].add(v - 1) -        if v < N - 1: -            g[v].add(v + 1) -    g[X].add(Y) -    g[Y].add(X) + +    def dist(a, b): +        return min(abs(a - b), abs(a - X) + abs(b - Y) + 1, abs(a - Y) + abs(b - X) + 1) + -    for v in range(N): -        dist = [-1] * N -        q = deque() -        q.append((v, 0)) -        while q: -            v, d = q.popleft() -            if ~dist[v] and dist[v] < d: -                continue -            dist[v] = d -            for u in g[v]: -                if ~dist[u]: -                    continue -                dist[u] = d + 1 -                q.append((u, d + 1)) -        for d in dist: +    for b in range(N): +        for a in range(b): +            d = dist(a, b) -    print(*map(lambda x: x // 2, ctr[1:]), sep="\n") +    print(*ctr[1:], sep="\n")