#2643. 洗牌

洗牌

题目描述

魔术师刘谦要洗牌了,请你写个程序来模拟洗牌的过程。

洗牌分弹牌和切牌两个操作:

弹牌——将牌组等分成两份,然后交错相插,如当前牌为 11 22 33 44 55 66 ,现在开始弹牌,先将牌分成 11 22 3344 55 66 ,然后交错相插,变成 11 44 22 55 33 66

切牌——从牌堆里面拿出连续的一段,然后放到顶端。如当前牌为11 22 33 44 55 66,切完 2255 之间的 44 张牌后变成 22 33 44 55 11 66

输入格式

第一行为两个正整数 NNMMNN 表示牌堆里面有 NN 张牌,MM 表示共进行 MM 次洗牌的操作。

第二行有 NN 个正整数,代表 NN 张牌上的数字,刘谦用的牌其实就是标有数字的卡片。

接下来 MM 行,每行一个整数或者三个整数。

如果第一个数为 00 ,那么这一行就这只有一个数,表示弹牌。

如果第一个数为 11 ,那么后面跟着两个正整数 bbee ,表示把 bbee 这段牌切到顶端。

输出格式

输出 MM 次操作后从第一张开始的每张牌上的数字。

相邻两数严格用一个空格隔开。

样例

样例输入

10 5
46 21 22 1 20 46 50 7 42 19
1 4 8
1 4 4
1 4 7
0
0

样例输出

46 22 1 21 7 42 20 50 46 19

数据范围与提示

M5M≤5N54N≤54,且 NN 为偶数;

每张牌上标的数为不超过 5454 的正整数,读入一行洗牌指令时应先读一个数,然后判断这个数是 00 还是 11 ,如果是 11 则再读 22 个数。另外你在记录牌的时候可以使用两个以上的数组!