카드 재배열
면접 대비시간 제한1초메모리 제한128 MB
1, 2, ..., 2n 순서로 쌓인 카드에 컷과 리플 셔플을 주어진 순서대로 적용한 뒤 최종 카드 배열을 위에서부터 출력한다.
문제
부터 까지의 수가 적힌 카드 장이 있으며, 위에서부터 의 순서로 쌓여 있다.
이 카드 더미를 다음 두 가지 방법을 여러 번 사용하여 재배열한다.
정수 로 컷 (cut)
위에서부터 장을 더미 로, 나머지 카드를 더미 로 나눈 뒤, 더미 위에 더미 를 올린다. 즉 재배열한 뒤에는 위에서부터 더미 의 카드가 오고, 그 아래에 더미 의 카드가 놓인다.

리플 셔플 (riffle shuffle)
위에서부터 장을 더미 로, 나머지 장을 더미 로 나눈 뒤, 위에서부터 의 번째, 의 번째, 의 번째, 의 번째, , 의 번째, 의 번째 순서가 되도록 하나의 더미로 합친다.

주어지는 지시에 따라 카드를 모두 재배열한 뒤, 카드의 번호를 위에서부터 순서대로 출력하는 프로그램을 작성하라.
입력
- 첫째 줄에 ()이 주어진다. 즉 카드의 장수는 장이다.
- 둘째 줄에 연산의 횟수 ()이 주어진다.
- 셋째 줄부터 째 줄까지 개의 줄에 걸쳐 이상 이하의 정수 가 한 줄에 하나씩 주어지며, 카드를 재배열하는 방법을 순서대로 지정한다.
- 이면 리플 셔플을 수행한다.
- 이면 로 컷을 수행한다.
출력
개의 줄을 출력한다. 첫째 줄에는 모든 재배열이 끝난 뒤 가장 위에 있는 카드의 번호를, 둘째 줄에는 위에서 두 번째 카드의 번호를 출력하며, 일반적으로 째 줄에는 위에서 번째 카드의 번호를 출력한다.