class DoublingDP: def __init__(self, xs: list, f0, op, nb=60): size = len(xs) doubling = [[0] * size for _ in range(nb)] dp = [[0] * size for _ in range(nb)] for i in range(size): doubling[0][i] = xs[i] dp[0][i] = f0(i) for k in range(nb-1): for i in range(size): doubling[k+1][i] = doubling[k][doubling[k][i]] dp[k+1][i] = op(dp[k][i], dp[k][doubling[k][i]]) self.nb = nb self.doubling = doubling self.dp = dp self.op = op def query(self, k: int, start: int, init): cur = start val = init for i in range(self.nb): if k & (1 << i): val = self.op(val, self.dp[i][cur]) cur = self.doubling[i][cur] return cur, val def op(a, b): return a + b def f(p: int) -> int: # 1 周したか if p + P[p] >= N: return 1 return 0 N, K = map(int, input().split()) P = list(map(int, input().split())) nexts = [(i + p) % N for i, p in enumerate(P)] d = DoublingDP(nexts, f, op) for i in range(N): cur, val = d.query(K, i, 0) # print(f'{cur=} {val=}') ans = val * N + cur + 1 print(ans)