1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
#include <queue>
#include <string.h>
#include <set>

#define ll long long

using namespace std;

int tab[1048576*4];

void sw(int i, int j) {

	if(i == j) return;

	// 0 1 2 3


	// for(int k=i; k < (i + (j-i)/2); ++k)
	int md = (j-i)/2 + i;
	for(int k=0; k<=(j-i)/2; ++k) {
		swap(tab[i + k], tab[md + k + 1]);
	}

	sw(i, md);
	sw(md + 1, j);

}

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	int n, t;
	cin>>n>>t;

	int p2 = 1;

	while(n--) p2 <<= 1;
	for(int i=0; i<p2;++i)
		cin>>tab[i];

	if( t % 2) {
		for(int i = 0; i< p2/2; ++i)
			swap(tab[i], tab[p2 - i - 1]);
	}

	// while(t--)
	// 	sw(0, p2-1);

	for(int i=0; i<p2;++i)
		cout<<tab[i]<<" ";
	cout<<"\n";
	// // cout<<p2<<"\n";

	return 0;

}