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
63
64
65
66
67
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
import java.lang.StringBuilder;
import java.io.PrintWriter;
import java.util.ArrayList;


public class tas{
  /*Petr reader template*/
  static class InputReader {
    public BufferedReader reader;
    public StringTokenizer tokenizer;

    public InputReader(InputStream stream) {
      reader = new BufferedReader(new InputStreamReader(stream), 32768);
      tokenizer = null;
    }

    public String next() {
      while (tokenizer == null || !tokenizer.hasMoreTokens()) {
        try {
          tokenizer = new StringTokenizer(reader.readLine(), " \t\n\r\f/");
        } catch (IOException e) {
          throw new RuntimeException(e);
        }
      }
      return tokenizer.nextToken();
    }
    
    public int nextInt() {
      return Integer.parseInt(next());
    }
    
  }
  
  
  public static void solve(int n, int t, ArrayList<Integer> cards){
     PrintWriter pw = new PrintWriter(System.out);
     if(t%2 == 0){
       for(int i=0;i<n;++i){
         pw.print(cards.get(i)+" ");
       }
     } else {
       for(int i=n-1;i>=0;--i){
         pw.print(cards.get(i)+" ");
       }
     }
     pw.flush();
     pw.close();
  }
  
  public static void main(String args[]){
    InputReader reader = new InputReader(System.in);
    int n = reader.nextInt();
    int limit = 1<<n;
    int t = reader.nextInt();
    ArrayList<Integer> cards = new ArrayList<>(limit);
    for(int i=0;i<limit;++i){
      cards.add(reader.nextInt());
    }  
    solve(limit, t, cards);
  }

}