题目描述
给定一个长度为 $n$ 的序列 $a$,一共有 $m$ 个操作。
每次操作的内容为:给定 $x,y$,序列中所有 $x$ 会变成 $y$。
同时我们有一份代码:
int ans = 2147483647;
for (int i = 1; i <= n; i++) {
for (int j = i + 1; j <= n; j++) {
if (a[i] == a[j])
ans = std::min(ans, j - i);
}
}
std::cout << ans << std::endl;
请在每次修改后输出代码运行的结果。
输入格式
第一行两个数,表示 $n,m$。
第二行 $n$ 个数,表示 $a_1,a_2,\cdots, a_n$。
然后 $m$ 行每行两个数 $x$ 和 $y$,表示序列中所有 $x$ 会变成 $y$。
输出格式
对于每次修改,输出答案。
样例
input
5 10
2 7 6 3 8
6 1
7 1
1 3
5 6
1 7
9 5
1 10
7 6
7 5
3 9
output
2147483647
1
1
1
1
1
1
1
1
1
数据范围与提示
$1\le n , m \le 100000$
每个出现的数字绝对值在 int
范围内。