Problem: You are given an integer N.

Construct any one N-by-N matrix a that satisfies the conditions below. It can be proved that a solution always exists under the constraints of this problem.

* 1 \leq a_{i,j} \leq 10^{15}
* a_{i,j} are pairwise distinct integers.
* There exists a positive integer m such that the following holds: Let x and y be two elements of the matrix that are vertically or horizontally adjacent. Then, {\rm max}(x,y) {\rm mod} {\rm min}(x,y) is always m.

Constraints

* 2 \leq N \leq 500

Input

Input is given from Standard Input in the following format:


N


Output

Print your solution in the following format:


a_{1,1} ... a_{1,N}
:
a_{N,1} ... a_{N,N}

Output

Print your solution in the following format:


a_{1,1} ... a_{1,N}
:
a_{N,1} ... a_{N,N}

Example

Input

2


Output

4 7
23 10

Solution (in CPP):

Solution:
/*Lucky_Glass*/
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int M=500,N=8000;
ll num[M+5][M+5],prm[N+5];
bool avoid[N+5];
int n;
void Prepare_Prime(){
	for(int i=2;i<=N;i++){
		if(!avoid[i]) prm[++prm[0]]=i;
		for(int j=1;j<=prm[0];j++){
			if(i*prm[j]>N) break;
			avoid[prm[j]*i]=true;
			if(i%prm[j]==0) break;
		}
	}
}

ll GCD(ll a,ll b){return b? GCD(b,a%b):a;}
ll LCM(ll a,ll b){return a/GCD(a,b)*b;}

int main(){
	scanf("%d",&n);
	if(n==2){
		printf("4 7\n23 10\n");
		return 0;
	}
	Prepare_Prime();
	for(int i=0;i<=n+1;i++)
		for(int j=0;j<=n+1;j++)
			num[i][j]=1;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			if((i+j)%2==0)
				num[i][j]=prm[(i+j)/2]*prm[1000-(i-j)/2-(n+1)/2+1];
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			if((i+j)%2)
				num[i][j]=LCM(LCM(num[i-1][j],num[i][j-1]),LCM(num[i+1][j],num[i][j+1]))+1;
	for(int i=1;i<=n;i++){
		for(int j=1;j<n;j++)
			printf("%lld ",num[i][j]);
		printf("%lld\n",num[i][n]);
	}
	return 0;
}