from collections import deque

# import sys

# input = sys.stdin.readline

n, x, y = list(map(int, input().split()))

g = dict()

for i in range(n):

    if i == 0:

        g[i] = [i+1]

    elif i == n-1:

        g[i] = [i-1]

    else:

        g[i] = [i-1, i+1]

g[x-1].append(y-1)

g[y-1].append(x-1)

# print(g)

distance = [0]*(n-1)

# 1番ノードから各ノードへの最短距離を求めていく.

for i in range(n):

    queue = deque()

    visited = [0]*n

    # まず処理される予定のノードが格納されているqueueに最初のノードを格納する

    queue.append(i)

    while queue:

        target = queue.popleft()

        for j in g[target]:

                if visited[j] == 0 or visited[j] > visited[target] + 1:

                    visited[j] = visited[target] + 1

                    queue.append(j)

    for k, a in enumerate(visited):

        if k > i:

            if a >= 1:

                distance[a-1] += 1

    # print(f"{i}番ノードからの各ノードへの最短距離は{visited}である")

for l in distance:

    print(l)
from collections import deque

def main():

    n, x, y = list(map(int, input().split()))

    g = dict()

    for i in range(n):

        if i == 0:

            g[i] = [i+1]

        elif i == n-1:

            g[i] = [i-1]

        else:

            g[i] = [i-1, i+1]

    g[x-1].append(y-1)

    g[y-1].append(x-1)

    distance = [0]*(n-1)

# 1番ノードから各ノードへの最短距離を求めていく.

    for i in range(n):

        queue = deque()

        visited = [0]*n

    # まず処理される予定のノードが格納されているqueueに最初のノードを格納する

        queue.append(i)

        while queue:

            target = queue.popleft()

            for j in g[target]:

                if visited[j] == 0 or visited[j] > visited[target] + 1:

                    visited[j] = visited[target] + 1

                    queue.append(j)

        for k, a in enumerate(visited):

            if k > i:

                if a >= 1:

                    distance[a-1] += 1

    # print(f"{i}番ノードからの各ノードへの最短距離は{visited}である")

    for l in distance:

        print(l)



if __name__ == "__main__":

    main()
from collections import deque

# import sys
# input = sys.stdin.readline
n, x, y = list(map(int, input().split()))
g = dict()
for i in range(n):
    if i == 0:
        g[i] = [i + 1]
    elif i == n - 1:
        g[i] = [i - 1]
    else:
        g[i] = [i - 1, i + 1]
g[x - 1].append(y - 1)
g[y - 1].append(x - 1)
# print(g)
distance = [0] * (n - 1)
# 1番ノードから各ノードへの最短距離を求めていく.
for i in range(n):
    queue = deque()
    visited = [0] * n
    # まず処理される予定のノードが格納されているqueueに最初のノードを格納する
    queue.append(i)
    while queue:
        target = queue.popleft()
        for j in g[target]:
            if visited[j] == 0 or visited[j] > visited[target] + 1:
                visited[j] = visited[target] + 1
                queue.append(j)
    for k, a in enumerate(visited):
        if k > i:
            if a >= 1:
                distance[a - 1] += 1
    # print(f"{i}番ノードからの各ノードへの最短距離は{visited}である")
for l in distance:
    print(l)

from collections import deque


def main():
    n, x, y = list(map(int, input().split()))
    g = dict()
    for i in range(n):
        if i == 0:
            g[i] = [i + 1]
        elif i == n - 1:
            g[i] = [i - 1]
        else:
            g[i] = [i - 1, i + 1]
    g[x - 1].append(y - 1)
    g[y - 1].append(x - 1)
    distance = [0] * (n - 1)
    # 1番ノードから各ノードへの最短距離を求めていく.
    for i in range(n):
        queue = deque()
        visited = [0] * n
        # まず処理される予定のノードが格納されているqueueに最初のノードを格納する
        queue.append(i)
        while queue:
            target = queue.popleft()
            for j in g[target]:
                if visited[j] == 0 or visited[j] > visited[target] + 1:
                    visited[j] = visited[target] + 1
                    queue.append(j)
        for k, a in enumerate(visited):
            if k > i:
                if a >= 1:
                    distance[a - 1] += 1
    # print(f"{i}番ノードからの各ノードへの最短距離は{visited}である")
    for l in distance:
        print(l)


if __name__ == "__main__":
    main()

-# import sys -# input = sys.stdin.readline -n, x, y = list(map(int, input().split())) -g = dict() -for i in range(n): -    if i == 0: -        g[i] = [i + 1] -    elif i == n - 1: -        g[i] = [i - 1] -    else: -        g[i] = [i - 1, i + 1] -g[x - 1].append(y - 1) -g[y - 1].append(x - 1) -# print(g) -distance = [0] * (n - 1) -# 1番ノードから各ノードへの最短距離を求めていく. -for i in range(n): -    queue = deque() -    visited = [0] * n -    # まず処理される予定のノードが格納されているqueueに最初のノードを格納する -    queue.append(i) -    while queue: -        target = queue.popleft() -        for j in g[target]: -            if visited[j] == 0 or visited[j] > visited[target] + 1: -                visited[j] = visited[target] + 1 -                queue.append(j) -    for k, a in enumerate(visited): -        if k > i: -            if a >= 1: -                distance[a - 1] += 1 + +def main(): +    n, x, y = list(map(int, input().split())) +    g = dict() +    for i in range(n): +        if i == 0: +            g[i] = [i + 1] +        elif i == n - 1: +            g[i] = [i - 1] +        else: +            g[i] = [i - 1, i + 1] +    g[x - 1].append(y - 1) +    g[y - 1].append(x - 1) +    distance = [0] * (n - 1) +    # 1番ノードから各ノードへの最短距離を求めていく. +    for i in range(n): +        queue = deque() +        visited = [0] * n +        # まず処理される予定のノードが格納されているqueueに最初のノードを格納する +        queue.append(i) +        while queue: +            target = queue.popleft() +            for j in g[target]: +                if visited[j] == 0 or visited[j] > visited[target] + 1: +                    visited[j] = visited[target] + 1 +                    queue.append(j) +        for k, a in enumerate(visited): +            if k > i: +                if a >= 1: +                    distance[a - 1] += 1 -for l in distance: -    print(l) +    for l in distance: +        print(l) + + +if __name__ == "__main__": +    main()