C语言助教有话说
题号:NC15590
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

“嗨,偶系你们的C语言助教,代码我写过很多,但链表我只写这一个,介系一款你没有写过的船新链表……”

“作为酱菜软件工程专业学生,想必你一定是知道链表是什么的。那么现在,我就替你们C语言老师来考考你们。”

在一行中输入两个整数NM0N,M1000),接下来一行中包含N个整数组成一个链表,之后的M行中,每一行包含3个整数TXY ,每行中T表示操作的类型,XY表示操作相关的数据,以空格分隔。

你需要做的,是输出操作后的链表。

定义如下操作:

T1时,表示在第个元素之后插入数据YX0时表示在链表首端插入。

T2时,表示将链表中第X1X)个元素替换为Y

T3时,表示删除链表中第X元素到第Y1XY)个元素。

T4时,表示反转 [ X , Y ] 区间内所有数据的顺序。

题目保证数据合法。

输入描述:

第一行输入N、M
第二行包含N个以空格分隔的整数
其后的M行,每行包含3个整数T、X、Y

输出描述:

在一行中按顺序输出链表中的元素,以空格分隔。行尾不得有多余空格
示例1

输入

复制
5 3
1 2 3 4 5
1 1 0
2 4 -1
3 2 4

输出

复制
1 4 5