import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static int n = 0;
public static boolean [][] matrix;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
n = (int) Math.pow(2, sc.nextInt());
matrix = new boolean[n][n];
for(int i = 0; i < n ;i++) {
Arrays.fill(matrix[i], true);
}
fn(0,0,n);
for(int i = 0; i < n;i++) {
for(int j = 0; j < n;j++) {
out.printf("%d ",matrix[i][j] ? 1 : 0);
}
out.println();
}
out.flush();
out.close();
}
private static void fn(int x, int y, int len) {
if(len <= 1 || x + len / 2 > n || y + len /2 > n)
return;
for(int i = x; i < x + len / 2; i++) {
for(int j = y; j < y + len / 2; j++) {
matrix[i][j] = false;
}
}
fn(x + len / 2,y,len / 2);
fn(x ,y + len / 2,len / 2);
fn(x + len / 2,y + len / 2,len / 2);
}
}