#include<cstdio>
#define M 505
#define N 10000
long long gcd(long long x,long long y){return y?gcd(y,x%y):x;}
long long lcm(long long x,long long y){return x/gcd(x,y)*y;}
int b[N],i,j,l,m,n,r,t;bool w[N];long long a[M][M];
int main()
{
	for(int i=2;i<N;i++)
	{
		if(!w[i])w[b[t++]=i]=true;
		for(j=0;i*b[j]<N;j++)
		{
			w[i*b[j]]=true;
			if(i%b[j]==0)break;
		}
	}
	scanf("%d",&n);
	for(i=1;i<=n;i++)a[i][0]=a[0][i]=a[n+1][i]=a[i][n+1]=1;
	if(n==2)return 0*puts("4 7\n23 10");
	for(i=1;i<=n;i++)for(j=1;j<=n;j++)if(~(i^j)&1)a[i][j]=b[i+j>>1]*b[(n-j+(~n&1)+i>>1)+n];
	for(i=1;i<=n;i++)for(j=1;j<=n;j++)if(!a[i][j])a[i][j]=lcm(lcm(a[i-1][j],a[i][j-1]),lcm(a[i][j+1],a[i+1][j]))+1;
	for(i=1;i<=n;i++)for(j=1;j<=n;j++)printf("%lld%c",a[i][j],j==n?'\n':' ');
	return 0;
}