메뉴 건너뛰기

문제


시간메모리제출 회통과 회비율
1초128MB
0
0
0.0%
나의 횟수나의 판정시도 명성공 명비율
00
0.0%
문제

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

이 카드를 아래 두 가지 방법으로 여러 번 섞는다.

정수 \(k\)로 컷 — 위에서 \(k\)장을 더미 A, 나머지를 더미 B로 나눈 뒤, B를 A 위에 올린다.

리플 셔플 — 위에서 \(n\)장을 더미 A, 나머지를 더미 B로 나눈 뒤, 위에서부터 A의 1장, B의 1장, A의 2장, B의 2장, \(\ldots\), A의 \(n\)장, B의 \(n\)장 순으로 한 더미로 만든다.

입력에 적힌 대로 섞은 뒤, 위에서부터 카드 번호를 출력하는 프로그램을 작성하라.

입력

입력은 다음 형식으로 주어진다.

\(n\)

\(m\)

\(k_1\)

\(\vdots\)

\(k_m\)

  • 첫째 줄에 \(n\)이 주어진다. 카드는 \(2n\)장이다.
  • 둘째 줄에 조작 횟수 \(m\)이 주어진다.
  • 다음 \(m\)줄에 \(0\) 이상 \(2n-1\) 이하인 정수 \(k\)가 한 줄에 하나씩 주어진다.
  • \(k = 0\)이면 리플 셔플을 한다.
  • \(1 \le k \le 2n-1\)이면 \(k\)로 컷을 한다.
  • \(1 \le n \le 100\)
  • \(1 \le m \le 1000\)
  • 입력되는 값은 모두 정수이다.
출력

다음 형식으로 출력한다.

섞기가 끝난 뒤 위에서 \(i\)번째 카드 번호를 \(i\)번째 줄에 출력한다. 모두 \(2n\)줄이다.

예시 1
입력
2 2 1 0
출력
2 4 3 1
예시 2
입력
3 4 2 4 0 0
출력
1 5 4 3 2 6
위로