伊卡洛斯给了你一个长为 n 的序列 a。
你需要实现 m 个操作,操作有两种:
- 把序列中所有值为 x 的数的值变成 y。
- 找出一个位置 i 满足 ai=x,找出一个位置 j 满足 aj=y,使得 |i−j| 最小,并输出 |i−j|。
输入格式
第一行两个整数 n,m。
之后一行 n 个整数,表示序列 a。
之后 m 行,每行三个数 opt,x,y。
如果 opt 为 1,代表把序列中所有值为 x 位置的值变成 y。
如果 opt 为 2,代表找出一个位置 i 满足 ai=x,找出一个位置 j 满足 aj=y,使得 |i−j| 最小,并输出 |i−j|,如果找不出这样的位置,输出 Ikaros
。
本题强制在线,每次的 x,y 需要 xor 上上次答案,如果输出 Ikaros
,或者是第一次询问,则上次答案为 0。
共 50 组数据,数据中保证 n=m。
输出格式
对于每个 2 操作,输出一行一个整数表示答案。
如果无法找出满足题意的 i,j,则输出 Ikaros
。
样例数据
样例输入
5 5
1 2 2 4 4
2 3 3
2 2 4
1 3 2
1 5 5
2 2 5
样例输出
Ikaros
1
1
子任务
Idea:nzhtl1477,Solution:nzhtl1477,Code:nzhtl1477,Data:nzhtl1477( partially uploaded )
对于 100% 的数据,所有数在 [1,105] 内,每次操作的值不超过 n。