伊卡洛斯给了你一个长为 $n$ 的序列 $a$。
你需要实现 $m$ 个操作,操作有两种:
- 把序列中所有值为 $x$ 的数的值变成 $y$。
- 找出一个位置 $i$ 满足 $a_i=x$,找出一个位置 $j$ 满足 $a_j=y$,使得 $|i-j|$ 最小,并输出 $|i-j|$。
输入格式
第一行两个整数 $n,m$。
之后一行 $n$ 个整数,表示序列 $a$。
之后 $m$ 行,每行三个数 $opt,x,y$。
如果 $opt$ 为 $1$,代表把序列中所有值为 $x$ 位置的值变成 $y$。
如果 $opt$ 为 $2$,代表找出一个位置 $i$ 满足 $a_i=x$,找出一个位置 $j$ 满足 $a_j=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,10^5]$ 内,每次操作的值不超过 $n$。