def rotate(tup:tuple[int,int])->tuple: return (tup[1],-tup[0]) def main(): N=int(input()) field=[[0 for i in range(N)] for j in range(N)] _count=1 x=0 y=0 field[y][x]=_count _count+=1 direction=(0,1) while _count<=N*N: if x+direction[0]<0 or x+direction[0]>=N or y+direction[1]<0 or y+direction[1]>=N or field[y+direction[1]][x+direction[0]]!=0: direction=rotate(direction) x+=direction[0] y+=direction[1] field[y][x]=_count _count+=1 field=zip(*field) for row in field: print(*map(lambda x:f"{x:03}",row)) if __name__=="__main__": main()