#include <iostream>
#include <vector>
#include <algorithm>
#include <tuple>
#include <array>
#include <map>

#define ll long long

using namespace std;

int ans[501][501];

signed main() {
	int n; cin >> n;
	if (n == 1) {
		cout << "Yes" << endl;
		cout << 1 << endl;
	}
	else if (n & 1) {
		cout << "No" << endl;
	}
	else {
		cout << "Yes" << endl;
		for (int i = 0; i < n; ++i) {
			for (int j = i; j < n; ++j) {
				ans[i][j] = (i + j) % n + 1;
			}
		}
		for (int i = 1; i < n - 1; ++i) {
			for (int j = 0; j < i; ++j) {
				ans[i][j] = (i + j) % (n - 1) + n;
				if (ans[i][j] == n)
					ans[i][j] = 2 * n - 1;
			}
		}
		ans[n - 1][0] = 2 * n - 1;
		for (int j = 1; j < n - 1; ++j) {
			ans[n - 1][j] = ans[j][j - 1] + 1;
			if (ans[n - 1][j] == 2 * n)
				ans[n - 1][j] = n + 1;
		}
		for (int i = 0; i < n; ++i) {
			for (int j = 0; j < n - 1; ++j)
				cout << ans[j][i] << " ";
			cout << ans[n - 1][i] << endl;
		}
	}

	return 0;
}

### Prompt

Develop a solution in CPP to the problem described below:

J: Horizontal-Vertical Permutation

Problem Statement

You are given a positive integer N. Your task is to determine if there exists a square matrix A whose dimension is N that satisfies the following conditions and provide an example of such matrices if it exists. A_{i, j} denotes the element of matrix A at the i-th row and j-th column.

* For all i, j (1 \leq i, j \leq N), A_{i, j} is an integer that satisfies 1 \leq A_{i, j} \leq 2N - 1.
* For all k = 1, 2, ..., N, a set consists of 2N - 1 elements from the k-th row or k-th column is \\{1, 2, ..., 2N - 1\\}.



If there are more than one possible matrices, output any of them.

Input


N

Input consists of one line, which contains the integer N that is the size of a square matrix to construct.

Constraint

* N is an integer that satisfies 1 \leq N \leq 500.



Output

Output `No` in a single line if such a square matrix does not exist.

If such a square matrix A exists, output `Yes` on the first line and A after that. More specifically, follow the following format.


Yes
A_{1, 1} A_{1, 2} ... A_{1, N}
A_{2, 1} A_{2, 2} ... A_{2, N}
:
A_{N, 1} A_{N, 2} ... A_{N, N}


Sample Input 1


4

Output for Sample Input 1


Yes
2 6 3 7
4 5 2 1
1 7 5 6
5 3 4 2


Sample Input 2


3

Output for Sample Input 2


No





Example

Input

4


Output

Yes
2 6 3 7
4 5 2 1
1 7 5 6
5 3 4 2

### Response

```cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include <tuple>
#include <array>
#include <map>

#define ll long long

using namespace std;

int ans[501][501];

signed main() {
	int n; cin >> n;
	if (n == 1) {
		cout << "Yes" << endl;
		cout << 1 << endl;
	}
	else if (n & 1) {
		cout << "No" << endl;
	}
	else {
		cout << "Yes" << endl;
		for (int i = 0; i < n; ++i) {
			for (int j = i; j < n; ++j) {
				ans[i][j] = (i + j) % n + 1;
			}
		}
		for (int i = 1; i < n - 1; ++i) {
			for (int j = 0; j < i; ++j) {
				ans[i][j] = (i + j) % (n - 1) + n;
				if (ans[i][j] == n)
					ans[i][j] = 2 * n - 1;
			}
		}
		ans[n - 1][0] = 2 * n - 1;
		for (int j = 1; j < n - 1; ++j) {
			ans[n - 1][j] = ans[j][j - 1] + 1;
			if (ans[n - 1][j] == 2 * n)
				ans[n - 1][j] = n + 1;
		}
		for (int i = 0; i < n; ++i) {
			for (int j = 0; j < n - 1; ++j)
				cout << ans[j][i] << " ";
			cout << ans[n - 1][i] << endl;
		}
	}

	return 0;
}

```