#include <iostream>
#include <cmath>
using namespace std;
int a[1050][1050];
void dfs(int bian,int x,int y)
{
if (bian == 2)
{
a[x][y] = 0;
return ;
}
for (int i = x;i <= x + bian / 2;i++)
{
for (int j = y;j <= y + bian / 2;j++)
{
a[i][j] = 0;
}
}
dfs(bian / 2,x + bian / 2,y);
dfs(bian / 2,x,y + bian / 2);
dfs(bian / 2,x + bian / 2,y + bian / 2);
}
int main()
{
int n;
cin >> n;
int bian = pow(2,n);
for (int i = 1;i <= bian;i++)
{
for (int j = 1;j <= bian;j++)
{
a[i][j] = 1;
}
}
dfs(bian,1,1);
for (int i = 1;i <= bian;i++)
{
for (int j = 1;j <= bian - 1;j++)
{
cout << a[i][j] << " ";
}
cout << a[i][bian] << endl;
}
return 0;
}