#include <stdio.h>
#include <math.h>
#define SIZE 256

void work(int *array,int k,int x,int y,int m,int n){
if(m == 1)
	array[k * x + y] = n;
else{
	work(array,k,x,y,m / 2,n);
	work(array,k,x,y + m / 2,m / 2,n + pow(m / 2,2));
	work(array,k,x + m / 2,y + m / 2,m / 2,n + 2 * pow(m / 2,2));
	work(array,k,x + m / 2,y,m / 2,n + 3 * pow(m / 2,2));
	}
}

void print(int *array,int n){
int i,j;
for(i = 0;i < n;i++){
	printf("\n");
	for(j = 0;j < n;j++)
		printf("[%02d]",array[i * n + j]);
	}
}

void main(){
	int n;
	int array[SIZE];
	printf("n : ");
	scanf("%d",&n);
	work(array,n,0,0,n,1);
	print(array,n);
}

