#include <cstdio>
#include <iostream>
using namespace std;
int cc[20] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024};
int a[1050][1050], N;
void print(int n)
{
int i, j;
for(i = 1; i <= cc[n]; i ++){
for(j = 1; j <= cc[n]; j ++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
void solve(int n, int p)
{
int i, j;
if(n == 0) return;
for(i = 1; i <= cc[n - 1]; i ++)
for(j = 1; j <= cc[n - 1]; j++)
a[i + p][j + p] = 0;
solve(n - 1, p + cc[n - 1]);
for(i = 1; i <= cc[n - 1]; i ++)
for(j = 1; j <= cc[n - 1]; j ++){
a[p + cc[n - 1] + i][j + p] = a[i + p][p + cc[n - 1] + j] = a[p + cc[n - 1] + i][p + cc[n - 1] + j];
}
return ;
}
int main()
{
int n;
scanf("%d", &N);
n = N;
for(int i = 1; i <= cc[n]; i ++)
for(int j = 1; j <= cc[n]; j ++)
a[i][j] = 1;
solve(n, 0);
print(n);
return 0;
}