幸存者
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小镇中有 n 个枪手,每间隔 k 回合开一次枪(回合计数从 0 开始,初始编号从数组下标第 1 个开始);
直到仅剩下一个人时,此人成为唯一幸存者;
注:
保证枪口只会对准一个人,且每个人都会被至少一个人指着,也就是说示例只可能会给出一个环;

例如:
当前共有 6 个枪手,每隔 2 回合开一次枪,当前的站位:1 5 3 4 2 6
则会产生如下结果:


输入描述:

第一行两个数 n , k
第二行,一个 1~n 的乱序数列(第一个数指向第二个数...最后一个数指向第一个数),表示一个环;

输出描述:

共一行表示已死亡的枪手(按照死亡的顺序排列);
示例1

输入

复制
2 1
1 2

输出

复制
1
示例2

输入

复制
6 2
1 5 3 4 2 6

输出

复制
4 1 2 3 6
示例3

输入

复制
5 3
4 2 3 5 1

输出

复制
1 5 4 3

备注:

2 <= n <= 10⁶;
1 <= k <= n;