[WFOI - 02] I wanna moqueve(位移序列)

题目背景

> It's my fiesta. > > 一场前,kid 在 WFOIR1 的地图上,折戟沉沙;一场后,kid 从倒下的地方爬起。 > > kid 成功了,他不再是从前那个他了。 简化题意:[$\texttt{Link}$](https://www.luogu.com.cn/paste/dlxx9pm0) 为什么做完这题你不去做做[这题](https://www.luogu.com.cn/problem/P7999)呢

题目描述

kid 需要在一台奇怪的电脑上排序一个 $1\sim n$ 的排列,下一个存档点才会出现。 kid 可以选择一个数 $x$,然后接下来的每次操作,kid 可以向左或向右循环位移一段长为 $x$ 的序列(最左/右边的会平移至最右/左边)(位移量是 $1$)。 如果 kid 的操作次数超过了 $23\times n$,排列就会爆炸,kid 将会再次倒下。所以,请告诉 kid 一种还原序列的方案,剩下的操作就交给 €€£ 吧!

输入输出格式

输入格式


输入共 $2$ 行: 第一行一个整数 $n$,表示序列长度。 第二行 $n$ 个整数,表示序列 $a$。

输出格式


输出共 $m + 2$ 行。 前两行每行 $1$ 个数,分别是 $x,m$。$m$ 表示操作次数。 接下来 $m$ 行,每行两个数,前一个数表示平移区间左端点,后一个数表示方向,$0$ 为向左,$1$ 为向右; 本题采用 $\text{SPJ}$,只要循环位移操作正确即可给分。

输入输出样例

输入样例 #1

3
2 3 1

输出样例 #1

2
2
2 0
1 0

输入样例 #2

5
4 2 3 5 1

输出样例 #2

3
3
3 1
1 1
2 0

说明

- **样例 $1$ 解释:** 左移 $(2,3)$ 序列变成 $2,1,3$; 左移 $(1,2)$ 序列变成 $1,2,3$; - **样例 $2$ 解释:** 右移 $(3,5)$ 序列变成 $4,2,1,3,5$; 右移 $(1,3)$ 序列变成 $1,4,2,3,5$; 左移 $(2,4)$ 序列变成 $1,2,3,4,5$; **本题采用 Subtask 捆绑测试。** Subtask 编号 | 数据规模与约定 :-: | :-: **Subtask #0** ($\texttt{1 pts}$) | $n=1$ **Subtask #1** ($\texttt{2 pts}$) | $n=2$ **Subtask #2** ($\texttt{3 pts}$) | $n=3$ **Subtask #3** ($\texttt{4 pts}$) | $n=4$ **Subtask #4** ($\texttt{20 pts}$) | $1\le n\le 50$ **Subtask #5** ($\texttt{20 pts}$) | $1\le n\le 100$ **Subtask #6** ($\texttt{50 pts}$) | $1\le n\le 10^3$ 对于 $100\%$ 的数据,$1\le n,a_i\le 10^3$,数据保证 $a$ 是一个 $1\sim n$ 的排列。