fn main() { let mut nk = String::new(); std::io::stdin().read_line(&mut nk).ok(); let nk: Vec = nk.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let n = nk[0]; let k = nk[1]; let mut p = String::new(); std::io::stdin().read_line(&mut p).ok(); let p: Vec = p.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let mut addval = vec![vec![0usize; n]; 32]; for i in 0..n { addval[0][i] = p[i]; } for i in 0..=30 { for j in 0..n { addval[i+1][j] = addval[i][j] + addval[i][(j+addval[i][j])%n]; } } let mut result = vec![0usize; n]; for i in 0..n { let mut idx = i; for j in 0..=31 { if ((k >> j) & 1) == 1 { result[i] += addval[j][idx]; idx += addval[j][idx]; idx %= n; } } } for i in 0..n { println!("{}", result[i]+i+1); } }