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>
using namespace std;

typedef long long ll;

bool prime(int x) {
	for (int i = 2; i * i <= x; ++i)
		if (x % i == 0) return false;
	return true;
}

ll a[505][505];
ll gcd(ll a, ll b) {
	return !b ? a : gcd(b, a % b);
}

int main() {
	int n;
	scanf("%d", &n);
	if (n == 2) {
		puts("4 7\n23 10");
		return 0;
	}
	vector<int> p;
	for (int i = 2; p.size() < 2 * n; ++i)
		if (prime(i)) p.push_back(i);
	auto it = p.begin();
	for (int i = 1; i <= n; ++i)
		for (int j = 1; j <= n; ++j)
			if (!(i + j & 1)) a[i][j] = 1;
	for (int d = 2; d < 2 * n; d += 2, ++it)
		for (int i = 1; i <= n; ++i)
			if (d - i >= 1 && d - i <= n)
				a[i][d - i] *= *it;
	for (int d = n & 1; d < 2 * n; d += 2, ++it)
		for (int i = 1; i <= n; ++i)
			if (d + i - n >= 1 && d + i - n <= n)
				a[i][d + i - n] *= *it;
	for (int i = 1; i <= n; ++i)
		for (int j = 1; j <= n; ++j)
			if (i + j & 1) {
				const int D[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
				a[i][j] = 1;
				for (int k = 0; k < 4; ++k) {
					int x = i + D[k][0], y = j + D[k][1];
					if (x >= 1 && x <= n && y >= 1 && y <= n)
						a[i][j] = a[i][j] / gcd(a[i][j], a[x][y]) * a[x][y];
				}
				++a[i][j];
			}
	for (int i = 1; i <= n; ++i)
		for (int j = 1; j <= n; ++j)
			printf("%lld%c", a[i][j], " \n"[j == n]);
	return 0;
}