#!/usr/bin/env python3

import sys

import collections



def solve(N: int, X: int, Y: int):

    def len_shortest_path(i, j, X, Y):

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

    result = collections.defaultdict(int)

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

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

            shortest_path = len_shortest_path(i, j, X, Y)

            result[shortest_path] += 1



    for i in range(1, N):

        print((result[i]))





def solve_slow(N: int, X: int, Y: int):

    d = [[100000000 for i in range(N)] for j in range(N)]

    X -= 1

    Y -= 1



    for i in range(N):

        d[i][i] = 0

        if i < N-1:

            d[i][i+1] = 1

            d[i+1][i] = 1

    d[X][Y] = 1

    d[Y][X] = 1



    for k in range(N):

        for i in range(N):

            for j in range(N):

                d[i][j] = min(d[i][j], d[i][k] + d[k][j])



    count_dict = collections.defaultdict(int)

    for row in d:

        for i in row:

            count_dict[i] += 1

    for i in range(1, N):

        print((count_dict[i]))

    return





def solve_slow(N: int, X: int, Y: int):

    d = [[100000000 for i in range(N)] for j in range(N)]

    X -= 1

    Y -= 1



    for i in range(N):

        d[i][i] = 0

        if i < N-1:

            d[i][i+1] = 1

            d[i+1][i] = 1

    d[X][Y] = 1

    d[Y][X] = 1



    for k in range(N):

        for i in range(N):

            for j in range(N):

                d[i][j] = min(d[i][j], d[i][k] + d[k][j])



    count_dict = collections.defaultdict(int)

    for row in d:

        for i in row:

            count_dict[i] += 1

    for i in range(1, N):

        print((count_dict[i]))

    return





# Generated by 1.1.6 https://github.com/kyuridenamida/atcoder-tools  (tips: You use the default template now. You can remove this line by using your custom template)

def main():

    def iterate_tokens():

        for line in sys.stdin:

            for word in line.split():

                yield word

    tokens = iterate_tokens()

    N = int(next(tokens))  # type: int

    X = int(next(tokens))  # type: int

    Y = int(next(tokens))  # type: int

    solve(N, X, Y)



if __name__ == '__main__':

    main()

#!/usr/bin/env python3

import sys

import collections



def solve(N: int, X: int, Y: int):

    X = X - 1

    Y = Y - 1



    counter = collections.defaultdict(int)

    for i in range(N):

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

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

            counter[k] += 1

    for i in range(1, N):

        print((counter[i]))

    return





# Generated by 1.1.6 https://github.com/kyuridenamida/atcoder-tools  (tips: You use the default template now. You can remove this line by using your custom template)

def main():

    def iterate_tokens():

        for line in sys.stdin:

            for word in line.split():

                yield word

    tokens = iterate_tokens()

    N = int(next(tokens))  # type: int

    X = int(next(tokens))  # type: int

    Y = int(next(tokens))  # type: int

    solve(N, X, Y)



if __name__ == '__main__':

    main()

#!/usr/bin/env python3
import sys
import collections


def solve(N: int, X: int, Y: int):
    def len_shortest_path(i, j, X, Y):
        return min(abs(j - i), abs(X - i) + abs(Y - j) + 1)

    result = collections.defaultdict(int)
    for i in range(1, N + 1):
        for j in range(i + 1, N + 1):
            shortest_path = len_shortest_path(i, j, X, Y)
            result[shortest_path] += 1
    for i in range(1, N):
        print((result[i]))


def solve_slow(N: int, X: int, Y: int):
    d = [[100000000 for i in range(N)] for j in range(N)]
    X -= 1
    Y -= 1
    for i in range(N):
        d[i][i] = 0
        if i < N - 1:
            d[i][i + 1] = 1
            d[i + 1][i] = 1
    d[X][Y] = 1
    d[Y][X] = 1
    for k in range(N):
        for i in range(N):
            for j in range(N):
                d[i][j] = min(d[i][j], d[i][k] + d[k][j])
    count_dict = collections.defaultdict(int)
    for row in d:
        for i in row:
            count_dict[i] += 1
    for i in range(1, N):
        print((count_dict[i]))
    return


def solve_slow(N: int, X: int, Y: int):
    d = [[100000000 for i in range(N)] for j in range(N)]
    X -= 1
    Y -= 1
    for i in range(N):
        d[i][i] = 0
        if i < N - 1:
            d[i][i + 1] = 1
            d[i + 1][i] = 1
    d[X][Y] = 1
    d[Y][X] = 1
    for k in range(N):
        for i in range(N):
            for j in range(N):
                d[i][j] = min(d[i][j], d[i][k] + d[k][j])
    count_dict = collections.defaultdict(int)
    for row in d:
        for i in row:
            count_dict[i] += 1
    for i in range(1, N):
        print((count_dict[i]))
    return


# Generated by 1.1.6 https://github.com/kyuridenamida/atcoder-tools  (tips: You use the default template now. You can remove this line by using your custom template)
def main():
    def iterate_tokens():
        for line in sys.stdin:
            for word in line.split():
                yield word

    tokens = iterate_tokens()
    N = int(next(tokens))  # type: int
    X = int(next(tokens))  # type: int
    Y = int(next(tokens))  # type: int
    solve(N, X, Y)


if __name__ == "__main__":
    main()

#!/usr/bin/env python3
import sys
import collections


def solve(N: int, X: int, Y: int):
    X = X - 1
    Y = Y - 1
    counter = collections.defaultdict(int)
    for i in range(N):
        for j in range(i + 1, N):
            k = min(j - i, abs(Y - j) + abs(X - i) + 1)
            counter[k] += 1
    for i in range(1, N):
        print((counter[i]))
    return


# Generated by 1.1.6 https://github.com/kyuridenamida/atcoder-tools  (tips: You use the default template now. You can remove this line by using your custom template)
def main():
    def iterate_tokens():
        for line in sys.stdin:
            for word in line.split():
                yield word

    tokens = iterate_tokens()
    N = int(next(tokens))  # type: int
    X = int(next(tokens))  # type: int
    Y = int(next(tokens))  # type: int
    solve(N, X, Y)


if __name__ == "__main__":
    main()

-    def len_shortest_path(i, j, X, Y): -        return min(abs(j - i), abs(X - i) + abs(Y - j) + 1) - -    result = collections.defaultdict(int) -    for i in range(1, N + 1): -        for j in range(i + 1, N + 1): -            shortest_path = len_shortest_path(i, j, X, Y) -            result[shortest_path] += 1 +    X = X - 1 +    Y = Y - 1 +    counter = collections.defaultdict(int) +    for i in range(N): +        for j in range(i + 1, N): +            k = min(j - i, abs(Y - j) + abs(X - i) + 1) +            counter[k] += 1 -        print((result[i])) - - -def solve_slow(N: int, X: int, Y: int): -    d = [[100000000 for i in range(N)] for j in range(N)] -    X -= 1 -    Y -= 1 -    for i in range(N): -        d[i][i] = 0 -        if i < N - 1: -            d[i][i + 1] = 1 -            d[i + 1][i] = 1 -    d[X][Y] = 1 -    d[Y][X] = 1 -    for k in range(N): -        for i in range(N): -            for j in range(N): -                d[i][j] = min(d[i][j], d[i][k] + d[k][j]) -    count_dict = collections.defaultdict(int) -    for row in d: -        for i in row: -            count_dict[i] += 1 -    for i in range(1, N): -        print((count_dict[i])) -    return - - -def solve_slow(N: int, X: int, Y: int): -    d = [[100000000 for i in range(N)] for j in range(N)] -    X -= 1 -    Y -= 1 -    for i in range(N): -        d[i][i] = 0 -        if i < N - 1: -            d[i][i + 1] = 1 -            d[i + 1][i] = 1 -    d[X][Y] = 1 -    d[Y][X] = 1 -    for k in range(N): -        for i in range(N): -            for j in range(N): -                d[i][j] = min(d[i][j], d[i][k] + d[k][j]) -    count_dict = collections.defaultdict(int) -    for row in d: -        for i in row: -            count_dict[i] += 1 -    for i in range(1, N): -        print((count_dict[i])) +        print((counter[i]))