Problem: 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

Solution (in CPP):

Solution:
#include <iostream>
using namespace std;
int a[505][505];
int main() {
    int n;
    cin >> n;
    if(n == 1) {
        cout << "Yes" << endl << "1" << endl;
        return 0;
    }
    if(n % 2 == 1)
        cout << "No" << endl;
    else if(n % 2 == 0) {
        cout << "Yes" << endl;
        for(int i = 1; i <= n; i++)
            a[i][i] = n;
        for(int i = 1; i <= n / 2; i++)
            a[i][n - i + 1] = 2 * n - 1;
        for(int i = n / 2 + 1; i <= n; i++)
            a[i][n - i + 1] = 1;
        for(int j = 1; j <= n / 2 - 1; j++)
            for(int i = j + 1; i <= n - j; i++)
                a[i][j] = i + j - 1;
        for(int j = 1; j <= n / 2 - 1; j++)
            for(int i = j + 1; i <= n - j; i++)
                a[j][i] = 2 * n - i - (j - 1);
        for(int i = 2; i <= n / 2; i++)
            a[i][n] = 2 * n + 1 - 2 * i;
        for(int i = n - 1; i >= n / 2 + 1; i--)
            a[i][n] = n + 2 * (n - i);
        for(int i = n / 2 + 1; i <= n - 1; i++)
            a[n][i] = i * 2 - n;
        for(int i = 2; i <= n / 2; i++)
            a[n][i] = 2 * i - 1;
        for(int i = n - 1; i >= n / 2 + 2; i--)
            for(int j = (n - i) + 2; j <= i - 1; j++)
                a[i][j] = a[i][j - 1] + 1;
        for(int i = n - 1; i >= n / 2 + 2; i--)
            for(int j = (n - i) + 2; j <= i - 1; j++)
                a[j][i] = a[j - 1][i] - 1;
        for(int i = 1; i <= n; i++) {
            for(int j = 1; j < n; j++)
                cout << a[i][j] << " ";
            cout << a[i][n] << endl;
        }
    }
    return 0;
}