C1556 [Ynoi]2018-D

内存限制:128 MB 时间限制:1000 ms

题目描述

伊卡洛斯给了你一个长为 $n$ 的序列 $a$

你需要实现 $m$ 个操作,操作有两种:

  1. 把序列中所有值为 $x$ 的数的值变成 $y$
  2. 找出一个位置 $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

对于 $100\%$ 的数据,所有数在 $[0,100000]$ 内

输出

对于每个 $2$ 操作,输出一行一个数表示答案

如果无法找出满足题意的 $i$,$j$,则输出Ikaros

样例

样例输入 1

5 5 1 2 2 4 4 2 3 3 2 2 4 1 3 2 1 5 5 2 2 5

样例输出 1

Ikaros 1 1

提示