1191: 度度熊学队列

文件提交:无需freopen 内存限制:128 MB 时间限制:1.000 S
评测方式:普通裁判 命题人:
提交:1 解决:1

题目描述

度度熊正在学习双端队列,他对其翻转和合并产生了很大的兴趣。初始时有N个空的双端队列(编号为1到N),你要支持度度熊的Q次不同种类的操作(共3种),分别为:

① 1 u w val:在编号为u的队列里加入一个值为val的元素,w等于0表示加在最前面,w等于1表示加在最后面。

例如:1 2 1 5,并假设2号队列里的元素为:2。
•第一个1表示这一行输入的是操作类型①的相关信息;
•第二个2表示对编号为2的队列进行操作;
•第三个1表示在2号队列后面添加元素;
•第四个5表示要添加的元素值。

那么操作完成后,2号队列里的元素为:2 5


② 2 u w:输出编号为u的队列里的某个元素并删除它,w等于0表示输出并删除最前面的元素,w等于1表示输出并删除最后面的元素。

例如:2 1 0,并假设1号队列里的元素为:7 1 3 4。

•第一个2表示这一行输入的是操作类型②的相关信息;

•第二个1表示对编号为1的队列进行操作;

•第三个0表示需要输出并删除1号队列最前面的元素;

那么操作完成后,会输出7并删除它,1号队列的元素为:1 3 4。


③ 3 u v w:把编号为v的队列接在编号为u的队列的最后面,w等于0表示将队列v按原顺序接在队列u之后;w等于1表示将队列v翻转顺序(逆序)后接在队列u之后。完成后队列v将变成空的。

例如:3 1 2 1,并假设1号队列的元素为:1 3 4;2号队列的元素为:2 5。

•第一个3表示这一行输入的是操作类型③的相关信息;

•第二个1和第三个2表示把2号队列接在1号队列后面;

•第四个1表示需要把2号队列的元素翻转顺序;

那么操作完成后,1号队列的元素为:1 3 4 5 2;而2号队列变为空的(没有任何元素)。



输入

第一行读入两个数N和Q。接下来有Q行,每行3~4个数,意义如题中所述。

N≤150,000,Q≤400,000,1≤u,v≤N,0≤w≤1,1≤val≤100,000。

输出

每执行一次操作类型②,都会输出一个数(单独一行)。


注意,如果某次操作②涉及的队列是空的话,就输出−1(且不执行删除操作)。


样例输入

2 10
1 1 1 23
1 1 0 233
2 1 1
1 2 1 2333
1 2 1 23333
3 1 2 1
2 2 0
2 1 1
2 1 0
2 1 1

样例输出

23
-1
2333
233
23333