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<bits/stdc++.h>
#define reg register
typedef unsigned long long ll;
using namespace std;
const int MN=80000;
int n,pri[2001],cnt,vis[MN+5],id[501][501][2];
ll a[501][501];
inline bool border(int i){return (i==1||i==n);}
int main(){
	scanf("%d",&n);
	for(reg int i=2;i<=MN;i++){
		if(!vis[i])pri[++cnt]=i;
		if(cnt==1000)break;
		for(reg int j=1;j<=cnt&&pri[j]*i<=MN;j++){
			vis[pri[j]*i]=1;
			if(!(i%pri[j]))break;
		}
	}
	if(n==2)return 0*puts("4 7\n23 10");
	for(reg int i=1;i<=n;i++)
		for(reg int j=1;j<=n;j++)
			if((~(i+j))&1){
				id[i][j][0]=(i+j)>>1;
				id[i][j][1]=n+((i-j+n)>>1)+1;
			}
	for(reg int i=1;i<=n;i++)
		for(reg int j=1;j<=n;j++)
			if((~(i+j))&1){
				a[i][j]=1ll*pri[id[i][j][0]]*pri[id[i][j][1]];
			}
			else{
				if(border(i)&&border(j))
					if(i==1)a[i][j]=1ll*pri[id[2][n][0]]*pri[id[1][n-1][0]]*pri[id[1][n-1][1]];
					else a[i][j]=1ll*pri[id[n][2][0]]*pri[id[n-1][1][0]]*pri[id[n-1][1][1]];
				else if(border(i))
					a[i][j]=1ll*pri[id[i][j-1][0]]*pri[id[i][j+1][0]]*pri[id[i][j-1][1]]*pri[id[i][j+1][1]];
				else a[i][j]=1ll*pri[id[i-1][j][0]]*pri[id[i+1][j][0]]*pri[id[i-1][j][1]]*pri[id[i+1][j][1]];
				a[i][j]++;
			}
	for(reg int i=1;i<=n;i++,puts(""))
		for(reg int j=1;j<=n;j++)
			printf("%llu ",a[i][j]);
	return 0;
}