Buggy python submission (verdict: Time Limit Exceeded):
# encoding:utf-8
import copy
import random
import bisect #bisect_left　これで二部探索の大小検索が行える
import fractions #最小公倍数などはこっち
import math
import sys
import collections

mod = 10**9+7
sys.setrecursionlimit(mod) # 再帰回数上限はでdefault1000

d = collections.deque()
def LI(): return list(map(int, sys.stdin.readline().split()))


N, X, Y = LI()
X -= 1
Y -= 1
path = [[mod for i in range(N)] for i in range(N)]
for i in range(N):
    for j in range(i, N):
        path[i][j] = j - i
        path[j][i] = j- i
    
path[X][Y] = 1
path[Y][X] = 1

for i in range(N):
    for j in range(i + 1, N):
        path[i][j] = min(path[i][j], path[i][X] + path[X][Y]+ path[Y][j])

anss = [0 for i in range(N)]
# for p in path:
#     print(p)

for i in range(N):
    for j in range(i + 1, N):
        anss[path[i][j]] += 1

for i in range(1, N):
    print(anss[i])

Fixed submission:
# encoding:utf-8
import copy
import random
import bisect #bisect_left　これで二部探索の大小検索が行える
import fractions #最小公倍数などはこっち
import math
import sys
import collections

mod = 10**9+7
sys.setrecursionlimit(mod) # 再帰回数上限はでdefault1000

d = collections.deque()
def LI(): return list(map(int, sys.stdin.readline().split()))


N, X, Y = LI()
X -= 1
Y -= 1
anss = [0 for i in range(N)]

for i in range(N):
    for j in range(i + 1, N):
        anss[min(
            abs(i - j), 
            abs(X - i) + 1 + abs(j - Y),
            abs(Y - i) + 1 + abs(X - j)
        )] += 1

for i in range(1, N):
    print(anss[i])

Buggy python submission (verdict: Time Limit Exceeded):
# encoding:utf-8
import copy
import random
import bisect #bisect_left　これで二部探索の大小検索が行える
import fractions #最小公倍数などはこっち
import math
import sys
import collections

mod = 10**9+7
sys.setrecursionlimit(mod) # 再帰回数上限はでdefault1000

d = collections.deque()
def LI(): return list(map(int, sys.stdin.readline().split()))


N, X, Y = LI()
X -= 1
Y -= 1
path = [[mod for i in range(N)] for i in range(N)]
for i in range(N):
    for j in range(N):
        path[i][j] = abs(i - j)
        path[j][i] = abs(j - i)
    
path[X][Y] = 1
path[Y][X] = 1


for i in range(N):
    for j in range(i + 1, N):
        path[i][j] = min(path[i][j], path[i][X] + path[Y][j] + 1)
        path[j][i] = min(path[i][j], path[i][X] + path[Y][j] + 1)
        

anss = [0 for i in range(N)]
# for p in path:
#     print(p)

for i in range(N):
    for j in range(N):
        anss[path[i][j]] += 1

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

Fixed submission:
# encoding:utf-8
import copy
import random
import bisect #bisect_left　これで二部探索の大小検索が行える
import fractions #最小公倍数などはこっち
import math
import sys
import collections

mod = 10**9+7
sys.setrecursionlimit(mod) # 再帰回数上限はでdefault1000

d = collections.deque()
def LI(): return list(map(int, sys.stdin.readline().split()))


N, X, Y = LI()
X -= 1
Y -= 1
anss = [0 for i in range(N)]

for i in range(N):
    for j in range(i + 1, N):
        anss[min(
            abs(i - j), 
            abs(X - i) + 1 + abs(j - Y),
            abs(Y - i) + 1 + abs(X - j)
        )] += 1

for i in range(1, N):
    print(anss[i])

Buggy python submission (verdict: Time Limit Exceeded):
# encoding:utf-8
import copy
import random
import bisect #bisect_left　これで二部探索の大小検索が行える
import fractions #最小公倍数などはこっち
import math
import sys
import collections

mod = 10**9+7
sys.setrecursionlimit(mod) # 再帰回数上限はでdefault1000

d = collections.deque()
def LI(): return list(map(int, sys.stdin.readline().split()))


N, X, Y = LI()
path = [[mod for i in range(N)] for i in range(N)]
for i in range(N):
    path[i][i] = 0

for i in range(N - 1):
    path[i][i + 1] = 1
    path[i + 1][i] = 1
    
path[X - 1][Y - 1] = 1
path[Y - 1][X - 1] = 1

for k in range(N):
    for i in range(N):
        for j in range(N):
            path[i][j] = min(path[i][j], path[i][k] + path[k][j])

anss = [0 for i in range(N)]
# print(path)
for i in range(N):
    for j in range(N):
        anss[path[i][j]] += 1

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

Fixed submission:
# encoding:utf-8
import copy
import random
import bisect #bisect_left　これで二部探索の大小検索が行える
import fractions #最小公倍数などはこっち
import math
import sys
import collections

mod = 10**9+7
sys.setrecursionlimit(mod) # 再帰回数上限はでdefault1000

d = collections.deque()
def LI(): return list(map(int, sys.stdin.readline().split()))


N, X, Y = LI()
X -= 1
Y -= 1
anss = [0 for i in range(N)]

for i in range(N):
    for j in range(i + 1, N):
        anss[min(
            abs(i - j), 
            abs(X - i) + 1 + abs(j - Y),
            abs(Y - i) + 1 + abs(X - j)
        )] += 1

for i in range(1, N):
    print(anss[i])