N, K = map(int, input().split()) P = list(map(int, input().split())) d = [0]*N for i in range(N): d[i] = (P[i]+i) % N #print(d) #vs = set() rs = [0] * N for i in range(N): # if i in vs: # continue pvs = set([i]) path = [] lps = [] lpc = 0 v = i while 1: path.append(v) lps.append(lpc) u = d[v] if u <= v: lpc += 1 if u in pvs: j = path.index(u) ss = len(path) - j lpp = lpc - lps[j] break # if u in vs: # break # vs.add(u) pvs.add(u) v = u for i in range(len(path)): if K+i >= j: x = path[(K-j+i)%ss + j] lp = lps[(K-j+i)%ss + j] + ((K-j+i)//ss)*lpp - lps[i] else: x = path[K+i] lp = lps[K+i] - lps[i] rs[path[i]] = x+1 + lp*N # print(path[i], x+1, lp*N) # print(i, j, ss, path) for i in range(N): print(rs[i])