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
/*
dla n==3:
12345678
21436587
43218765
87654321

tasowanie zmienia kolejność na odwrotną
parzysta ilość tasowań nic nie zmienia

limity:
1<=n<=20
2<=2^n<=2^20
1<=t,a<=1e09<2^30
*/

#include <stdio.h>

int main()
{
  unsigned n, m, t, i;

  scanf("%u%u", &n, &t);
  m = 1u<<n;
  if (t%2)
  {
    unsigned a[m];
    for (i=0; i<m; i++) scanf("%u", &a[i]);
    for (i=0; i<m; i++) printf("%u%c", a[m-1-i], "\n "[i<m-1]);
  }
  else
  {
    unsigned a;
    for (i=0; i<m; i++)
    {
      scanf("%u", &a);
      printf("%u%c", a, "\n "[i<m-1]);
    }
  }
  return 0;
}