对于一个序列,定义其众数为序列中出现次数严格大于一半的数字。注意该定义与一般的定义有出入,在本题中请以题面中给出的定义为准。
一开始给定 n 个长度不一的正整数序列,编号为 1 ~n,初始序列可以为空。这 n 个序列被视为存在,其他编号对应的序列视为不存在。
有 q 次操作,操作有以下类型:
- 1 x y:在 x 号序列末尾插入数字 y。保证 x 号序列存在,且 1 ≤ x, y ≤ n + q。
- 2 x:删除 x 号序列末尾的数字,保证 x 号序列存在、非空,且 1 ≤ x ≤ n + q。
- 3 m x1 x2 xm:将 x1, x2, ..., xm 号序列顺次拼接,得到一个新序列,并询问其众数。如果不存在满足上述条件的数,则返回 -1。数据保证对于任意 1 ≤ i ≤ m,xi 是一个仍然存在的序列,1 ≤ xi ≤ n + q,且拼接得到的序列非空。注意:不保证 x1, ... , xm 互不相同,询问中的合并操作不会对后续操作产生影响。
- 4 x1 x2 x3:新建一个编号为 x3 的序列,其为 x1 号序列后顺次添加 x2 号序列中数字得到的结果,然后删除 x1, x2 对应的序列。此时序列 x3 视为存在,而序列 x1, x2 被视为不存在,在后续操作中也不会被再次使用。保证 1 ≤ x1, x2, x3 ≤ n + q、x1 ne x2、序列 x1, x2 在操作前存在、且在操作前没有序列使用过编号 x3。
