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:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define MN 505
using namespace std;
typedef long long ll;
int n,pr[MN<<2],tt;bool p[MN*MN];
ll a[MN][MN];
const int dx[]={-1,0,1,0};
const int dy[]={0,-1,0,1};
int main(){
	scanf("%d",&n);
	for(int i=2;i<=1e5;i++){
		if(!p[i]){
			pr[++tt]=i;
			if(tt>=4*n)break;
		}
		for(int j=1;j<=tt;j++){
			if(i*pr[j]>1e5)break;
			p[i*pr[j]]=1;
			if(i%pr[j]==0)break;
		}
	}ll tt=0;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			if((i+j)%2==0){
				a[i][j]=1ll*pr[i+j>>1]*pr[(i-j)/2+n];
			}else {
				a[i][j]=1ll*pr[i+j>>1]*pr[(i+j+1)>>1];
				if(i-j<0)a[i][j]*=1ll*pr[(i-j)/2+n]*pr[(i-j-1)/2+n];
				else a[i][j]*=1ll*pr[(i-j)/2+n]*pr[(i-j+1)/2+n];a[i][j]++;
				tt=max(a[i][j],tt);
			}//printf("%lld\n",tt);
/*	for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)for(int k=0;k<4;k++){
		int tx=i+dx[k],ty=j+dy[k];
		if(tx>=1&&tx<=n&&ty>=1&&ty<=n){
			if(max(a[i][j],a[tx][ty])%min(a[i][j],a[tx][ty])!=1)printf("%d %d %d %d\n",i,j,tx,ty);
		}
	}*/
	for(int i=1;i<=n;i++){for(int j=1;j<=n;j++)printf("%lld ",a[i][j]);puts("");}
}