##A0~Bnまで2*n個あるため ##和の種類は2*N必要となる N=int(input()) NN=N*2 ##最大と最小を行と列に順番に振り分けていく ## ex.N=4(0~7)なら0,7は縦、1,6は横… tate=list(range(0,NN//2,2))+list(range(NN//2+1,NN,2)) yoko=list(range(1,NN//2,2))+list(range(NN//2,NN,2)) yoko=sorted(yoko) ans=[[0 for _ in range(N)] for _ in range(N)] ##縦の値を貪欲に埋めていく for i in range(N): for j in range(N): if tate[i]>=2: ans[i][j]=2 tate[i]-=2 elif tate[i]==1: ans[i][j]=1 tate[i]-=1 for a in ans: print(''.join(map(str,a)))