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

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

for i in range(1, N):

    graph[i-1].append(i)

    graph[i].append(i-1)

graph[X-1].append(Y-1)

graph[Y-1].append(X-1)

from collections import deque, defaultdict

dic = defaultdict(int)



def bfs(s):

    checked = [0]*N

    queue = deque([(s, 0)])

    while queue:

        v, c = queue.pop()

        if checked[v]:

            continue

        checked[v] = 1

        dic[c] += 1

        for i in graph[v]:

            if not checked[i]:

                queue.appendleft((i, c+1))



for i in range(N):

    bfs(i)



for i in range(1, N):

    print((dic[i]//2))

        
import sys

def input(): return sys.stdin.readline().strip()

def mapint(): return list(map(int, input().split()))

sys.setrecursionlimit(10**9)



N, X, Y = mapint()

X, Y = X-1, Y-1

dist = [0]*(N-1)

for i in range(N-1):

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

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

        dist[d-1] += 1

for k in range(N-1):

    print((dist[k]))
N, X, Y = list(map(int, input().split()))
graph = [[] for _ in range(N)]
for i in range(1, N):
    graph[i - 1].append(i)
    graph[i].append(i - 1)
graph[X - 1].append(Y - 1)
graph[Y - 1].append(X - 1)
from collections import deque, defaultdict

dic = defaultdict(int)


def bfs(s):
    checked = [0] * N
    queue = deque([(s, 0)])
    while queue:
        v, c = queue.pop()
        if checked[v]:
            continue
        checked[v] = 1
        dic[c] += 1
        for i in graph[v]:
            if not checked[i]:
                queue.appendleft((i, c + 1))


for i in range(N):
    bfs(i)
for i in range(1, N):
    print((dic[i] // 2))

import sys


def input():
    return sys.stdin.readline().strip()


def mapint():
    return list(map(int, input().split()))


sys.setrecursionlimit(10**9)
N, X, Y = mapint()
X, Y = X - 1, Y - 1
dist = [0] * (N - 1)
for i in range(N - 1):
    for j in range(i + 1, N):
        d = min(j - i, abs(i - X) + abs(j - Y) + 1, abs(i - Y) + abs(j - X) + 1)
        dist[d - 1] += 1
for k in range(N - 1):
    print((dist[k]))

-N, X, Y = list(map(int, input().split())) -graph = [[] for _ in range(N)] -for i in range(1, N): -    graph[i - 1].append(i) -    graph[i].append(i - 1) -graph[X - 1].append(Y - 1) -graph[Y - 1].append(X - 1) -from collections import deque, defaultdict - -dic = defaultdict(int) +import sys -def bfs(s): -    checked = [0] * N -    queue = deque([(s, 0)]) -    while queue: -        v, c = queue.pop() -        if checked[v]: -            continue -        checked[v] = 1 -        dic[c] += 1 -        for i in graph[v]: -            if not checked[i]: -                queue.appendleft((i, c + 1)) +def input(): +    return sys.stdin.readline().strip() -for i in range(N): -    bfs(i) -for i in range(1, N): -    print((dic[i] // 2)) +def mapint(): +    return list(map(int, input().split())) + + +sys.setrecursionlimit(10**9) +N, X, Y = mapint() +X, Y = X - 1, Y - 1 +dist = [0] * (N - 1) +for i in range(N - 1): +    for j in range(i + 1, N): +        d = min(j - i, abs(i - X) + abs(j - Y) + 1, abs(i - Y) + abs(j - X) + 1) +        dist[d - 1] += 1 +for k in range(N - 1): +    print((dist[k]))