#2113. 洗牌

洗牌

题目描述

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

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

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

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

输入格式

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

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

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

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

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

输出格式

输出 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

数据范围与提示

M≤5M≤5,N≤54N≤54,且 NN 为偶数;

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