import sys input = lambda :sys.stdin.readline()[:-1] ni = lambda :int(input()) na = lambda :list(map(int,input().split())) yes = lambda :print("yes");Yes = lambda :print("Yes");YES = lambda : print("YES") no = lambda :print("no");No = lambda :print("No");NO = lambda : print("NO") ####################################################################### n = ni() p = [x-1 for x in na()] seen = [0] * n from math import gcd dp = [0] * (1 + n) for i in range(n): if seen[i]: continue x = i g = [x] seen[x] = 1 while p[x] != i: x = p[x] seen[x] = 1 g.append(x) k = 0 # print(g) for i in range(len(g)-1): k = gcd(k, g[i+1] - g[0]) # print(g, k) dp[k] += len(g) - 1 # print(dp) for i in range(1, n): for j in range(i*2, n + 1, i): dp[i] += dp[j] for i in range(1, n): print(dp[i])