import java.io.*; public class n09934 { static int K; static int[] arr; static StringBuffer[] ans; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); K = Integer.parseInt(br.readLine()); arr = new int[(int) Math.pow(2, K) - 1]; String[] input = br.readLine().split(" "); for (int i = 0; i < arr.length; i++) arr[i] = Integer.parseInt(input[i]); ans = new StringBuffer[K]; for (int i = 0; i < K; i++) ans[i] = new StringBuffer(); solve(0, arr.length - 1, 0); for (int i = 0; i < K; i++) bw.write(ans[i].toString() + "\n"); bw.flush(); } public static void solve(int s, int e, int floor) { if (floor == K) return; int m = (s + e) / 2; ans[floor].append(arr[m] + " "); solve(s, m - 1, floor + 1); solve(m + 1, e, floor + 1); } }