#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
int n;
int a[1100][1100];
int main()
{
scanf("%d",&n);
n=pow(2,n);
int h=1;
a[0][0]=1;
do{
//以i j为基 h 为增量
for(int i=0;i<h;i++){
for(int j=0;j<h;j++){
a[i][j+h]=a[i][j]+h;//右上角 a[i][j] 为左上角
a[i+h][j]=a[i][j+h];//左下角和右上角一样
a[i+h][j+h]=a[i][j];//右下和左上一样
}
}
h=h*2;
}while(h<n);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}