Problem1792--循环移位

1792: 循环移位

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 128 MB

Description

对一个长度为 n 的数列 a,我们定义循环左移和循环右移操作:

  • 假设数列 a 为 a1, a…… an-1, an

  • 对 a 循环左移 i 位的结果为 ai+1, ai+2 … a… ai-1, ai,就是将数列 a 的所有元素左移 i 位,溢出的元素按溢出顺序从右端依次补进。

  • 对 a 循环右移 i 位的结果为 an-i+1, an-i+2 … a… an-i-1, an-i,就是将数列 a 的所有元素右移 i 位,溢出的元素按溢出顺序从左端依次补进。

现给定数列 a,以及要求进行的操作 op,输出对 a 进行该操作之后的数列。

Input

多组数据。

每组输入两行,第一行包含三个正整数 n、op 以及 i,分别表示数列 a 的长度、移动的方向以及移动的位数。(1 ≤ i ≤ n ≤ 10^4,op ∈ {1, 2})

op = 1 时,表示操作为循环左移 i 位。op = 2 时,表示操作为循环右移 i 位。

第二行包含 n 个整数,描述整个数列 a,第 i 个整数表示 ai。(-10^9 ≤ ai ≤ 10^9)

文件以EOF结束。

Output

每组输出一行,包含数列 a 操作之后的结果,数列中的整数用一个空格隔开。

Sample Input Copy

5 1 3
2 3 0 -3 4
5 2 4
5 1 2 3 4

Sample Output Copy

-3 4 2 3 0
1 2 3 4 5

Source/Category