#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <set>
#include <vector>
#include <queue>
#include <stack>
#include <map>
using namespace std;
#define pi pair<int,int>
#define mp(x,y) make_pair(x,y)
#define fi first
#define se second
#define pl pair<long long,long long>
#define pb push_back
int t[2000005];
int main()
{
    int n,k,a;
    scanf ("%d%d", &n, &k);
    n=1<<n;
    for (a=0; a<n; a++)
        scanf ("%d", &t[a]);
    if (k%2)
        for (a=n-1; a>=0; a--)
            printf ("%d ", t[a]);
    else
        for (a=0; a<n; a++)
            printf ("%d ", t[a]);
    return 0;
}
        | 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 | #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <set> #include <vector> #include <queue> #include <stack> #include <map> using namespace std; #define pi pair<int,int> #define mp(x,y) make_pair(x,y) #define fi first #define se second #define pl pair<long long,long long> #define pb push_back int t[2000005]; int main() { int n,k,a; scanf ("%d%d", &n, &k); n=1<<n; for (a=0; a<n; a++) scanf ("%d", &t[a]); if (k%2) for (a=n-1; a>=0; a--) printf ("%d ", t[a]); else for (a=0; a<n; a++) printf ("%d ", t[a]); return 0; } | 
 
            
         English
                    English