Buggy python submission (verdict: Time Limit Exceeded):
import collections
def main():
    N,X,Y = map(int, input().split())
    # 扱いやすいようにX,Yはインデックス表記にしておく
    X -= 1
    Y -= 1
    # i<jを満たす(i,j)について6通りの場合分けして全最短距離を求められる
    shortest = [[-1]*N for _ in range(N)]
    for i in range(N):
        k1 = abs(X-i)
        for j in range(i+1,N):
            k2 = abs(j-Y)
            shortest[i][j] = min(j-i, k1+1+k2)

    coll = [collections.Counter(s) for s in shortest]
    for i in range(1,N):
        count = 0
        for j in range(N):
            count += coll[j].get(i,0)
        print(count)
main()


Fixed submission:
import collections
def main():
    N,X,Y = map(int, input().split())
    # 扱いやすいようにX,Yはインデックス表記にしておく
    X -= 1
    Y -= 1
    # i<jを満たす(i,j)について6通りの場合分けして全最短距離を求められる
    shortest = [[-1]*N for _ in range(N)]
    coll = collections.Counter()
    for i in range(N):
        k1 = abs(X-i)
        for j in range(i+1,N):
            k2 = abs(j-Y)
            shortest[i][j] = min(j-i, k1+1+k2)
        coll += collections.Counter(shortest[i])

    for i in range(1,N):
        print(coll.get(i,0))
        
main()

Buggy python submission (verdict: Time Limit Exceeded):
import collections
def main():
    N,X,Y = map(int, input().split())
    # 扱いやすいようにX,Yはインデックス表記にしておく
    X -= 1
    Y -= 1
    # i<jを満たす(i,j)について6通りの場合分けして全最短距離を求められる
    shortest = [[-1]*N for _ in range(N)]
    for i in range(N):
        for j in range(i+1,N):
            shortest[i][j] = min(j-i, abs(X-i)+1+abs(j-Y))

    coll = [collections.Counter(s) for s in shortest]
    for i in range(1,N):
        count = 0
        for j in range(N):
            count += coll[j].get(i,0)
        print(count)
main()


Fixed submission:
import collections
def main():
    N,X,Y = map(int, input().split())
    # 扱いやすいようにX,Yはインデックス表記にしておく
    X -= 1
    Y -= 1
    # i<jを満たす(i,j)について6通りの場合分けして全最短距離を求められる
    shortest = [[-1]*N for _ in range(N)]
    coll = collections.Counter()
    for i in range(N):
        k1 = abs(X-i)
        for j in range(i+1,N):
            k2 = abs(j-Y)
            shortest[i][j] = min(j-i, k1+1+k2)
        coll += collections.Counter(shortest[i])

    for i in range(1,N):
        print(coll.get(i,0))
        
main()

Buggy python submission (verdict: Time Limit Exceeded):
import collections
def main():
    N,X,Y = map(int, input().split())
    # 扱いやすいようにX,Yはインデックス表記にしておく
    X -= 1
    Y -= 1
    # i<jを満たす(i,j)について6通りの場合分けして全最短距離を求められる
    shortest = [[-1]*N for _ in range(N)]
    for i in range(N):
        for j in range(i+1,N):
            # i<=X,Y<=j
            if i<=X and Y<=j:
                shortest[i][j] = min(j-i, X-i+1+j-Y)
            # j<=X
            elif j<=X:
                shortest[i][j] = j-i
            # i<=X<j<=Y
            elif i<=X and X<=j and j<=Y:
                shortest[i][j] = min(j-i, X-i+1+Y-j)
            # X<=i,j<=Y
            elif X<=i and j<=Y:
                shortest[i][j] = min(j-i, i-X+1+Y-j)
            # X<=i<=Y<=j
            elif X<=i and i<=Y and Y<=j:
                shortest[i][j] = min(j-i, i-X+1+j-Y)
            # Y<=i
            else:
                shortest[i][j] = j-i

    coll = [collections.Counter(s) for s in shortest]
    for i in range(1,N):
        count = 0
        for j in range(N):
            count += coll[j].get(i,0)
        print(count)
main()


Fixed submission:
import collections
def main():
    N,X,Y = map(int, input().split())
    # 扱いやすいようにX,Yはインデックス表記にしておく
    X -= 1
    Y -= 1
    # i<jを満たす(i,j)について6通りの場合分けして全最短距離を求められる
    shortest = [[-1]*N for _ in range(N)]
    coll = collections.Counter()
    for i in range(N):
        k1 = abs(X-i)
        for j in range(i+1,N):
            k2 = abs(j-Y)
            shortest[i][j] = min(j-i, k1+1+k2)
        coll += collections.Counter(shortest[i])

    for i in range(1,N):
        print(coll.get(i,0))
        
main()

Buggy python submission (verdict: Time Limit Exceeded):
import collections
def main():
    N,X,Y = map(int, input().split())
    # 扱いやすいようにX,Yはインデックス表記にしておく
    X -= 1
    Y -= 1
    # i<jを満たす(i,j)について6通りの場合分けして全最短距離を求められる
    shortest = [[-1]*N for _ in range(N)]
    for i in range(N):
        for j in range(i+1,N):
            # i<=X,Y<=j
            if i<=X and Y<=j:
                shortest[i][j] = min(j-i, X-i+1+j-Y)
            # j<=X
            elif j<=X:
                shortest[i][j] = j-i
            # i<=X<j<=Y
            elif i<=X and X<=j and j<=Y:
                shortest[i][j] = min(j-i, X-i+1+Y-j)
            # X<=i,j<=Y
            elif X<=i and j<=Y:
                shortest[i][j] = min(j-i, i-X+1+Y-j)
            # X<=i<=Y<=j
            elif X<=i and i<=Y and Y<=j:
                shortest[i][j] = min(j-i, i-X+1+j-Y)
            # Y<=i
            else:
                shortest[i][j] = j-i

    for i in range(1,N):
        count = 0
        for j in range(N):
            coll = collections.Counter(shortest[j])
            count += coll.get(i,0)
        print(count)
main()


Fixed submission:
import collections
def main():
    N,X,Y = map(int, input().split())
    # 扱いやすいようにX,Yはインデックス表記にしておく
    X -= 1
    Y -= 1
    # i<jを満たす(i,j)について6通りの場合分けして全最短距離を求められる
    shortest = [[-1]*N for _ in range(N)]
    coll = collections.Counter()
    for i in range(N):
        k1 = abs(X-i)
        for j in range(i+1,N):
            k2 = abs(j-Y)
            shortest[i][j] = min(j-i, k1+1+k2)
        coll += collections.Counter(shortest[i])

    for i in range(1,N):
        print(coll.get(i,0))
        
main()