아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

섞기

시간 제한1초메모리 제한256 MB

요약
2^n장의 카드에 재귀적 섞기를 t번 적용한 뒤 최종 순서를 출력한다.
난이도

보통10점 중 7점

유형
분할 정복, 비트 연산, 재귀, 구현
정답자
아직 제출이 없습니다

문제

Byteasar는 카드 덱을 섞는 아주 훌륭한 재귀적 방법을 배웠다. 이 알고리즘은 다음과 같다.

  • 카드 두 장을 섞으려면 두 장을 서로 바꾼다.
  • 2k2^k장의 카드(k≥2k \geq 2)를 섞으려면 카드를 같은 크기의 두 부분, 즉 위쪽 부분과 아래쪽 부분으로 나눈다(각 부분은 2k−12^{k - 1}장이다). 각 부분을 재귀적으로 섞은 다음, 아래쪽 절반을 위쪽 절반 위에 올린다.

Byteasar에게는 2n2^n장의 카드 덱이 있다. 각 카드에는 수가 적혀 있다. Byteasar는 이제 위에서 설명한 절차를 정확히 tt번 실행하여 덱을 섞는다. 시간이 아주 오래 걸릴 수 있으므로, 그는 최종 카드 순서를 미리 알고 싶어 한다.

입력

입력의 첫째 줄에는 두 정수 n,tn, t가 주어진다(1≤n≤201 \le n \le 20, 1≤t≤1091 \le t \le 10^9). 둘째 줄에는 2n2^n개의 정수 a_1,…,a_2na\_1, \dots, a\_{2^n}가 주어진다(1≤a_i≤1091 \le a\_i \le 10^9). a_ia\_i는 덱에서 위에서 ii번째 카드에 적힌 수이다.

출력

출력의 첫째 줄이자 유일한 줄에 tt번 섞은 뒤 Byteasar의 덱에 있는 카드에 적힌 수 2n2^n개를 출력한다. 수는 위에서 아래 방향으로 출력한다.

예제1

  1. 예제 1

    입력
    2 1
    2 4 1 5
    
    예상 출력
    5 1 4 2