Problem K: Vector的基本操作 III

Problem K: Vector的基本操作 III

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 256 MiB

Description

给定一个 N 个数的数组,M 次操作,每次操作为下列操作之一。求最后的数列。 
操作 1:在尾部插入一个数 X。 
操作 2:删除尾部元素。 
操作 3:在第 X 位置插入一个数 Y。 
操作 4:删除第 X 位置的数。
操作 5:删除第 X 到 Y 位置的数,注意范围的含头不含尾原则,从位置 X 到位置 Y 表示包含位置 X 的元素但不包含位置 Y 的元素,类似数学上的左闭右开区间 [X, Y)。
操作 6:获取 Vector 的大小。
操作 7:清空 Vector 的数据。

Input

第一行两个整数 N,M( N,M ≤ 100000)含义见试题描述。   
第二行 N 个整数,表示原来的数组。  
接下来 M 行,每行第一个数 OPT,表示操作类型。  
对于操作 1,接下来一个数 X,含义见题面描述。  
对于操作 2,删除尾部元素。 
对于操作 3,接下来两个数 X,Y,含义见题面描述,保证 0 ≤ X ≤ 当前数的个数,若 X = 0,表示在数组开头插入。 
对于操作 4,接下来一个数 X,含义见题面描述,保证 1 ≤ X ≤当前数的个数。
对于操作 5,接下来两个数 X,Y,含义见题面描述,保证 0 ≤ X ≤ 当前数的个数,若 X = 0,表示在数组开头删除。
对于操作 6,输出当前 Vector 的大小,并换行。
对于操作 7,清空当前 Vector。

Output

输出若干个数,表示最后的数组。如果数组为空,不输出。

Sample 1 Input

5 9
1 7 9 13 5
1 15
2
6
3 0 3
6
3 3 5
6
4 2
1 2

Sample 1 Output

5
6
7
3 1 5 9 13 5 2