import sys

from heapq import heapify, heappop, heappush



sr = lambda: sys.stdin.readline().rstrip()

ir = lambda: int(sr())

lr = lambda: list(map(int, sr().split()))



def dijkstra(start):

    INF = 10 ** 10

    dist = [INF] * (N+1)

    dist[start] = 0

    que = [(0,start)]

    while que:

        d, prev = heappop(que)

        if dist[prev] < d:

            continue

        for next in graph[prev]:

            d1 = d + 1

            if dist[next] > d1:

                dist[next] = d1

                heappush(que, (d1, next))

    return dist



N, X, Y = lr()

answer = [0] * N # 1-indexed

graph = [[] for _ in range(N+1)] # 1-indexed

for i in range(1, N):

    graph[i].append(i+1)

    graph[i+1].append(i)

graph[X].append(Y)

graph[Y].append(X)



dist_X = dijkstra(X)

dist_Y = dijkstra(Y)

for i in range(1, N):

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

        d = min(j-i, dist_X[i] + dist_X[j], dist_Y[i] + dist_Y[j])

        answer[d] += 1



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

# coding: utf-8

import sys



sr = lambda: sys.stdin.readline().rstrip()

ir = lambda: int(sr())

lr = lambda: list(map(int, sr().split()))



N, X, Y = lr()

dis = [[0] * (N+1) for _ in range(N+1)]

for i in range(1, N):

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

        dis[i][j] = j - i

        dis[j][i] = j - i



dis[X][Y] = 1

dis[Y][X] = 1

for i in range(1, N):

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

        dis[i][j] = min(dis[i][j], dis[i][X] + 1 + dis[Y][j])



answer = [0] * (N)

for i in range(1, N):

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

        d = dis[i][j]

        answer[d] += 1



print(('\n'.join(map(str, answer[1:]))))

import sys
from heapq import heapify, heappop, heappush

sr = lambda: sys.stdin.readline().rstrip()
ir = lambda: int(sr())
lr = lambda: list(map(int, sr().split()))


def dijkstra(start):
    INF = 10**10
    dist = [INF] * (N + 1)
    dist[start] = 0
    que = [(0, start)]
    while que:
        d, prev = heappop(que)
        if dist[prev] < d:
            continue
        for next in graph[prev]:
            d1 = d + 1
            if dist[next] > d1:
                dist[next] = d1
                heappush(que, (d1, next))
    return dist


N, X, Y = lr()
answer = [0] * N  # 1-indexed
graph = [[] for _ in range(N + 1)]  # 1-indexed
for i in range(1, N):
    graph[i].append(i + 1)
    graph[i + 1].append(i)
graph[X].append(Y)
graph[Y].append(X)
dist_X = dijkstra(X)
dist_Y = dijkstra(Y)
for i in range(1, N):
    for j in range(i + 1, N + 1):
        d = min(j - i, dist_X[i] + dist_X[j], dist_Y[i] + dist_Y[j])
        answer[d] += 1
print(*answer[1:], sep="\n")

# coding: utf-8
import sys

sr = lambda: sys.stdin.readline().rstrip()
ir = lambda: int(sr())
lr = lambda: list(map(int, sr().split()))
N, X, Y = lr()
dis = [[0] * (N + 1) for _ in range(N + 1)]
for i in range(1, N):
    for j in range(i + 1, N + 1):
        dis[i][j] = j - i
        dis[j][i] = j - i
dis[X][Y] = 1
dis[Y][X] = 1
for i in range(1, N):
    for j in range(i + 1, N + 1):
        dis[i][j] = min(dis[i][j], dis[i][X] + 1 + dis[Y][j])
answer = [0] * (N)
for i in range(1, N):
    for j in range(i + 1, N + 1):
        d = dis[i][j]
        answer[d] += 1
print(("\n".join(map(str, answer[1:]))))

+# coding: utf-8 -from heapq import heapify, heappop, heappush - - -def dijkstra(start): -    INF = 10**10 -    dist = [INF] * (N + 1) -    dist[start] = 0 -    que = [(0, start)] -    while que: -        d, prev = heappop(que) -        if dist[prev] < d: -            continue -        for next in graph[prev]: -            d1 = d + 1 -            if dist[next] > d1: -                dist[next] = d1 -                heappush(que, (d1, next)) -    return dist - - -answer = [0] * N  # 1-indexed -graph = [[] for _ in range(N + 1)]  # 1-indexed -for i in range(1, N): -    graph[i].append(i + 1) -    graph[i + 1].append(i) -graph[X].append(Y) -graph[Y].append(X) -dist_X = dijkstra(X) -dist_Y = dijkstra(Y) +dis = [[0] * (N + 1) for _ in range(N + 1)] -        d = min(j - i, dist_X[i] + dist_X[j], dist_Y[i] + dist_Y[j]) +        dis[i][j] = j - i +        dis[j][i] = j - i +dis[X][Y] = 1 +dis[Y][X] = 1 +for i in range(1, N): +    for j in range(i + 1, N + 1): +        dis[i][j] = min(dis[i][j], dis[i][X] + 1 + dis[Y][j]) +answer = [0] * (N) +for i in range(1, N): +    for j in range(i + 1, N + 1): +        d = dis[i][j] -print(*answer[1:], sep="\n") +print(("\n".join(map(str, answer[1:]))))