说明
考虑一个 1∼N 的排列 p1∼pN。定义一次操作 (l,r,len) 表示:
- 对于 i=0,…,len−1,交换 pl+i 与 pr+i。
这里保证 [l,l+len−1] 与 [r,r+len−1] 不交。
有一个操作池,初始为空。
有 Q 个事件:
- 1 x:对排列 [1,2,…,N],进行任意次(可以不进行)操作池中的操作,求出操作完后 x 最终下标的最小值和最大值。
- 一个操作可以被使用多次;
- 操作的顺序不限;
- 不必使用操作池中的所有操作。
- 2 l r len:向操作池中加入一个操作 (l,r,len)。
回答每个询问。
输入格式
第一行,两个正整数 N,Q(1≤N,Q≤2×105)。
接下来 Q 行,每行两个(或四个)正整数,形如 1 x 或 2 l r len,描述一个事件。其中:
- 1≤x≤N;
- 1≤len≤N,l+len−1<r,r+len−1≤N。
输出格式
对于每个事件 1,输出一行两个正整数,分别表示最终得到下标的最小值、最大值。
5 3
2 3 4 1
1 5
1 3
5 5
3 4
9 2
2 1 7 2
1 2
2 8
提示
样例解释
样例二解释:不操作可以得到最小值;操作 1 次可以得到最大值。
子任务
| 子任务编号 |
满分 |
限制 |
| 1 |
9 |
N,Q≤5 |
| 2 |
14 |
N,Q≤15 |
| 3 |
22 |
N,Q≤5000 |
| 4 |
11 |
N≤4000 |
| 5 |
17 |
N≤10000 |
| 6 |
37 |
无额外限制 |