问题陈述
我们有一个 N×K 整数序列:X=(X0,X1,⋯,XN×K−1)。它的元素由另一个 N 整数序列表示:A=(A0,A1,⋯,AN−1)。对于每对 i,j (0≤i≤K−1, 0≤j≤N−1),成立 Xi×N+j=Aj。
Snuke 有一个整数序列 s,一开始是空的。对于每个 i=0,1,2,⋯,N×K−1,按照这个顺序,他将执行以下操作:
- 如果 s 不包含 Xi:将 Xi 添加到 s 的末尾。
- 如果 s 包含 Xi:重复删除 s 的末尾元素,直到 s 不再包含 Xi。请注意,在这种情况下,我们不将 Xi 添加到 s 的末尾。
找出 Snuke 完成操作后的 s 的元素。
约束条件
- 1≤N≤2×105
- 1≤K≤1012
- 1≤Ai≤2×105
- 输入中的所有值都是整数。
输入
输入的格式如下所示:
N K
A0 A1 ⋯ AN−1
输出
按照开始到结束的顺序,以空格分隔,打印 Snuke 完成操作后的 s 的元素。
示例输入 1
3 2
1 2 3
示例输出 1
2 3
在这种情况下,X=(1,2,3,1,2,3)。我们将按照以下方式执行操作:
- i=0:s 不包含 1,所以我们将 1 添加到 s 的末尾,结果为 s=(1)。
- i=1:s 不包含 2,所以我们将 2 添加到 s 的末尾,结果为 s=(1,2)。
- i=2:s 不包含 3,所以我们将 3 添加到 s 的末尾,结果为 s=(1,2,3)。
- i=3:s 包含 1,所以只要 s 包含 1,我们会重复删除 s 的末尾元素,导致 s 发生以下变化:(1,2,3)→(1,2)→(1)→()。
- i=4:s 不包含 2,所以我们将 2 添加到 s 的末尾,结果为 s=(2)。
- i=5:s 不包含 3,所以我们将 3 添加到 s 的末尾,结果为 s=(2,3)。
示例输入 2
5 10
1 2 3 2 3
示例输出 2
3
示例输入 3
6 1000000000000
1 1 2 2 3 3
示例输出 3
s 最后可能为空。
示例输入 4
11 97
3 1 4 1 5 9 2 6 5 3 5
示例输出 4
9 2 6