Problem:
Score : 1100 points

Problem Statement

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}

Sample Input 1

2

Sample Output 1

4 7
23 10

For any two elements x and y that are vertically or horizontally adjacent, {\rm max}(x,y) {\rm mod} {\rm min}(x,y) is always 3.

Solution in C++ (GCC 5.4.1) (judge verdict: Wrong Answer)

#include<iostream>
#include<cstdio>
#define LL long long
using namespace std;
int n,tot;
const int N=1005;
LL a[N][N],zhi[N<<1],vis[10010];
LL GCD(LL a,LL b){return b?GCD(b,a%b):a;}
LL LCM(LL a,LL b){return a&b?a/GCD(a,b)*b:a+b;}
void YYCH()
{
	vis[1]=1;
	for(int i=2;i<=10000;++i)
	{
		if(!vis[i])zhi[++tot]=i;
		for(int j=1;j<=tot&&i*zhi[j]<=10000;++j)
		{
			vis[i*zhi[j]]=1;
			if(!(i%zhi[j]))break;
		}
	}
}
int main()
{
	cin>>n;if(n==2)return printf("4 7\n23 10\n")==233;
	YYCH();
    for(int i=1;i<=n;++i)
    	for(int j=((i+1)&1)+1;j<=n;j+=2)
    		a[i][j]=zhi[(i+j)/2]*zhi[n+(i-j)/2+(n+1)/2];
    for(int i=1;i<=n;++i)
    	for(int j=(i&1)+1;j<=n;j+=2)
			a[i][j]=LCM(LCM(a[i-1][j],a[i][j-1]),LCM(a[i+1][j],a[i][j+1]))+1;
    for(int i=1;i<=n;++i,puts(""))
    	for(int j=1;j<=n;++j)printf("%lld ",a[i][j]);
    return 0;
}