카드 재배열

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

$1$부터 $2n$까지의 수가 적힌 카드 $2n$장이 있으며, 위에서부터 $1, 2, 3, \dots, 2n$의 순서로 쌓여 있다.

이 카드 더미를 다음 두 가지 방법을 여러 번 사용하여 재배열한다.

정수 $k$로 컷 (cut)

위에서부터 $k$장을 더미 $A$로, 나머지 카드를 더미 $B$로 나눈 뒤, 더미 $A$ 위에 더미 $B$를 올린다. 즉 재배열한 뒤에는 위에서부터 더미 $B$의 카드가 오고, 그 아래에 더미 $A$의 카드가 놓인다.

리플 셔플 (riffle shuffle)

위에서부터 $n$장을 더미 $A$로, 나머지 $n$장을 더미 $B$로 나눈 뒤, 위에서부터 $A$의 $1$번째, $B$의 $1$번째, $A$의 $2$번째, $B$의 $2$번째, $\dots$, $A$의 $n$번째, $B$의 $n$번째 순서가 되도록 하나의 더미로 합친다.

주어지는 지시에 따라 카드를 모두 재배열한 뒤, 카드의 번호를 위에서부터 순서대로 출력하는 프로그램을 작성하라.

입력

  • 첫째 줄에 $n$ ($1 \le n \le 100$)이 주어진다. 즉 카드의 장수는 $2n$장이다.
  • 둘째 줄에 연산의 횟수 $m$ ($1 \le m \le 1000$)이 주어진다.
  • 셋째 줄부터 $m+2$째 줄까지 $m$개의 줄에 걸쳐 $0$ 이상 $2n-1$ 이하의 정수 $k$가 한 줄에 하나씩 주어지며, 카드를 재배열하는 방법을 순서대로 지정한다.
    • $k = 0$이면 리플 셔플을 수행한다.
    • $1 \le k \le 2n-1$이면 $k$로 컷을 수행한다.

출력

$2n$개의 줄을 출력한다. 첫째 줄에는 모든 재배열이 끝난 뒤 가장 위에 있는 카드의 번호를, 둘째 줄에는 위에서 두 번째 카드의 번호를 출력하며, 일반적으로 $i$째 줄에는 위에서 $i$번째 카드의 번호를 출력한다.