import numpy as np



inf = np.iinfo(np.uint32).max







# def solve():

#     dists_y = [abs(y-a) for a in range(0,n+1)]

#     dists_x = [abs(x-a) for a in range(0,n+1)]

#     count_dists = np.zeros(n+1, dtype=int)

#     for a in range(1,n+1):

#         for b in range(1,a+1):

#             dis = min(abs(b-a), dists_x[a] + dists_y[b] + 1, dists_y[a] + dists_x[b] + 1)

#             count_dists[dis] += 1

#     #print(min_dists)

#     for j in range(1,n):

#         print(count_dists[j])



def solve():

    dists_y = [abs(y-a) for a in range(1,n+1)]

    dists_x = [abs(x-a) for a in range(1,n+1)]



    aa = np.tile(np.arange(1, n+1), (n, 1))

    bb = aa.transpose().copy()

    base_dists = np.abs(aa-bb).copy()

    aa = np.tile(dists_y, (n, 1))

    bb = np.tile(dists_x, (n, 1)).transpose().copy()

    ab_dists = aa + bb + 1

    ba_dists = ab_dists.transpose().copy()

    min_dists = np.minimum(ab_dists, ba_dists)

    min_dists = np.minimum(min_dists, base_dists)

    count_dists = np.bincount(min_dists.reshape(n**2))

    for j in range(1,n):

        if j+1>len(count_dists):

            print((0))

        else:

            print((count_dists[j]//2))







#

# def ceildiv(a, b):

#     return a // b + a % b







n, x, y = [int(i) for i in input().split(" ")]



# import time

# t = time.time()

# n, x, y = 2000, 200, 600





solve()

#print(time.time()- t)


def solve():

    dists_y = [abs(y-a) for a in range(0,n+1)]

    dists_x = [abs(x-a) for a in range(0,n+1)]

    count_dists = [0]*(n+1)

    for a in range(1,n+1):

        for b in range(1,a+1):

            dis = min(abs(b-a), dists_x[a] + dists_y[b] + 1, dists_y[a] + dists_x[b] + 1)

            count_dists[dis] += 1

    #print(min_dists)

    for j in range(1,n):

        print((count_dists[j]))











#

# def ceildiv(a, b):

#     return a // b + a % b







n, x, y = [int(i) for i in input().split(" ")]



# import time

# t = time.time()

#n, x, y = 2000, 200, 600

solve()

#print(time.time()- t)
import numpy as np

inf = np.iinfo(np.uint32).max
# def solve():
#     dists_y = [abs(y-a) for a in range(0,n+1)]
#     dists_x = [abs(x-a) for a in range(0,n+1)]
#     count_dists = np.zeros(n+1, dtype=int)
#     for a in range(1,n+1):
#         for b in range(1,a+1):
#             dis = min(abs(b-a), dists_x[a] + dists_y[b] + 1, dists_y[a] + dists_x[b] + 1)
#             count_dists[dis] += 1
#     #print(min_dists)
#     for j in range(1,n):
#         print(count_dists[j])
def solve():
    dists_y = [abs(y - a) for a in range(1, n + 1)]
    dists_x = [abs(x - a) for a in range(1, n + 1)]
    aa = np.tile(np.arange(1, n + 1), (n, 1))
    bb = aa.transpose().copy()
    base_dists = np.abs(aa - bb).copy()
    aa = np.tile(dists_y, (n, 1))
    bb = np.tile(dists_x, (n, 1)).transpose().copy()
    ab_dists = aa + bb + 1
    ba_dists = ab_dists.transpose().copy()
    min_dists = np.minimum(ab_dists, ba_dists)
    min_dists = np.minimum(min_dists, base_dists)
    count_dists = np.bincount(min_dists.reshape(n**2))
    for j in range(1, n):
        if j + 1 > len(count_dists):
            print((0))
        else:
            print((count_dists[j] // 2))


#
# def ceildiv(a, b):
#     return a // b + a % b
n, x, y = [int(i) for i in input().split(" ")]
# import time
# t = time.time()
# n, x, y = 2000, 200, 600
solve()
# print(time.time()- t)

def solve():
    dists_y = [abs(y - a) for a in range(0, n + 1)]
    dists_x = [abs(x - a) for a in range(0, n + 1)]
    count_dists = [0] * (n + 1)
    for a in range(1, n + 1):
        for b in range(1, a + 1):
            dis = min(
                abs(b - a), dists_x[a] + dists_y[b] + 1, dists_y[a] + dists_x[b] + 1
            )
            count_dists[dis] += 1
    # print(min_dists)
    for j in range(1, n):
        print((count_dists[j]))


#
# def ceildiv(a, b):
#     return a // b + a % b
n, x, y = [int(i) for i in input().split(" ")]
# import time
# t = time.time()
# n, x, y = 2000, 200, 600
solve()
# print(time.time()- t)

-import numpy as np - -inf = np.iinfo(np.uint32).max -# def solve(): -#     dists_y = [abs(y-a) for a in range(0,n+1)] -#     dists_x = [abs(x-a) for a in range(0,n+1)] -#     count_dists = np.zeros(n+1, dtype=int) -#     for a in range(1,n+1): -#         for b in range(1,a+1): -#             dis = min(abs(b-a), dists_x[a] + dists_y[b] + 1, dists_y[a] + dists_x[b] + 1) -#             count_dists[dis] += 1 -#     #print(min_dists) -#     for j in range(1,n): -#         print(count_dists[j]) -    dists_y = [abs(y - a) for a in range(1, n + 1)] -    dists_x = [abs(x - a) for a in range(1, n + 1)] -    aa = np.tile(np.arange(1, n + 1), (n, 1)) -    bb = aa.transpose().copy() -    base_dists = np.abs(aa - bb).copy() -    aa = np.tile(dists_y, (n, 1)) -    bb = np.tile(dists_x, (n, 1)).transpose().copy() -    ab_dists = aa + bb + 1 -    ba_dists = ab_dists.transpose().copy() -    min_dists = np.minimum(ab_dists, ba_dists) -    min_dists = np.minimum(min_dists, base_dists) -    count_dists = np.bincount(min_dists.reshape(n**2)) +    dists_y = [abs(y - a) for a in range(0, n + 1)] +    dists_x = [abs(x - a) for a in range(0, n + 1)] +    count_dists = [0] * (n + 1) +    for a in range(1, n + 1): +        for b in range(1, a + 1): +            dis = min( +                abs(b - a), dists_x[a] + dists_y[b] + 1, dists_y[a] + dists_x[b] + 1 +            ) +            count_dists[dis] += 1 +    # print(min_dists) -        if j + 1 > len(count_dists): -            print((0)) -        else: -            print((count_dists[j] // 2)) +        print((count_dists[j]))