#BW202. 旋转排列

旋转排列

题目背景

我们称一个数列 pp 是一个长度为 nn 的排列,当且仅当 pp 满足如下条件:

  1. pp 的长度为 nn
  2. 1,2,3,n1, 2, 3, \dots nnn 个数在 pp 中均恰好出现一次。

题目描述

对于一个排列 pp,定义一次“shift”操作是指:将 pp 里的每一个数字都依次向后移动一位,并把 pp 的最后一个数字移动到开头去。

例如,若排列 pp 初始时为 [1,4,2,3][1,4,2,3],则“shift”一次以后将变为 [3,1,4,2][3,1,4,2]

现在,给定一个长度为 nn 的排列 pp,请你按照如下规定循环操作:

  1. 对当前的排列 pp 做一次“shift”操作;
  2. 输出本次“shift”以后的排列 pp
  3. 判断排列 pp 的最后一个数字是否是 nn,如果是,则结束循环操作;否则回到 11 继续操作。

提示:请严格按照题目给出的顺序进行循环操作。

输入格式

第一行是一个整数,表示排列 pp 的长度 nn
第二行有 nn 个整数表示排列 pp,第 ii 个整数表示 pip_i

输出格式

对于每次操作的第二条“输出”操作,请你输出一行 nn 个整数,按顺序表示当前排列的每个数,一行中相邻两个数之间用一个空格隔开。

输入输出样例

4
1 4 2 3
3 1 4 2
2 3 1 4
3
1 2 3
3 1 2
2 3 1
1 2 3
10
1 7 6 5 8 4 3 9 10 2
2 1 7 6 5 8 4 3 9 10