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<bits/stdc++.h>
using namespace std;
#define Maxn 510

int n, a[Maxn][Maxn];
int main()
{
    scanf("%d", &n);
    if (n==1) { puts("Yes"); puts("1"); return 0; }
    if (n&1) { puts("No"); return 0; }
    puts("Yes");
    for (int i=1; i<=n; i++)
        for (int j=i; j<=n; j++)
            a[i][j]=(i+j-2)%n+1;
    for (int i=2; i<=n; i++)
        for (int j=1; j<i; j++)
        {
            a[i][j]=(i+j-2)%(n-1)+n;
            if (a[i][j]==n) a[i][j]=(n<<1)-1;
        }
    for (int i=2; i<n; i++)
        if (a[n][i-1] + 2 > (n<<1) - 1) a[n][i]=a[n][i-1]-(n-3);
        else a[n][i]=a[n][i-1] + 2;
    for (int i=1; i<=n; i++)
    {
        for (int j=1; j<n; j++)
            printf("%d ", a[i][j]);
        printf("%d\n", a[i][n]);
    }
}