刀虎二象性
题号:NC237668
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

维护一个数列 a ,这个数列初始为空。

对于这个数列 a ,总共有 q 次操作,每次操作分为如下五个种类:

1 x,在数列末尾加一个数字
2 x y,将数列中所有值为 x 的数的值替换成 y
3 x ,查询值为 x 的位置的个数
4 x,查询位置 x 上的数
5 x y,满足 求最早的使得 的时刻,如果询问时 输出 -1

我们定义每次操作 / 询问为一个时刻。

输入描述:

第一行一个整数 

接下来 q 行:

lst 为当前最后一次答案不为 -1 的询问的答案。

,保证解密后的 x 满足
,保证解密后的 x,y 满足
,保证解密后的 x 满足
,保证当前序列长度
,保证当前序列长度

输出描述:

对于每个询问输出一行整数表示该询问的答案。
示例1

输入

复制
10
1 2
4 1
1 0
4 0
3 0
2 0 0
5 0 0
1 2
2 2 2
1 2

输出

复制
2
2
2
3