def main(): import sys from collections import deque input = sys.stdin.readline N, K = map(int, input().split()) P = list(map(int, input().split())) ans = [-1] * (N+1) dest = [0] * (N+1) to = [0] * (N+1) rev = [[] for _ in range(N+1)] for i in range(1, N+1): to[i] = i + P[i-1] if to[i] > N: to[i] -= N rev[to[i]].append(i) seen = [0] * (N+1) for i in range(1, N+1): if seen[i] == 0: x = i cycle = [] while True: if seen[x] == 2: break if seen[x]: cycle.append(x) seen[x] += 1 x = to[x] #print(i, seen, cycle, ans) L = len(cycle) cs = [0] * (L+1) cs[0] = cycle[0] for j in range(L): cs[j+1] = cs[j] + P[cycle[j]-1] d, m = divmod(K, L) ans[cycle[0]] = d * (cs[-1] - cs[0]) + cs[m] last = cycle[m%L] dest[cycle[0]] = last for j in range(1, L): v = cycle[j] u = cycle[j-1] ans[v] = ans[u] + P[last-1] last = to[last] dest[v] = last if cycle[j] <= cycle[j-1]: ans[v] -= N c2i = {cycle[j]: j for j in range(L)} que = deque() for v in cycle: for u in rev[v]: if u not in c2i: que.append(u) while que: v = que.popleft() seen[v] = 3 u = to[v] w = cycle[c2i[dest[u]] - 1] dest[v] = w ans[v] = ans[u] - P[w-1] if v >= u: ans[v] += N for uu in rev[v]: que.append(uu) print(*ans[1:]) if __name__ == '__main__': main()