Problem: Find an n × n matrix with different numbers from 1 to n2, so the sum in each row, column and both main diagonals are odd.

Input

The only line contains odd integer n (1 ≤ n ≤ 49).

Output

Print n lines with n integers. All the integers should be different and from 1 to n2. The sum in each row, column and both main diagonals should be odd.

Examples

Input

1


Output

1


Input

3


Output

2 1 4
3 5 7
6 9 8

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
template <class T>
bool umin(T& a, T b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool umax(T& a, T b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
int even = 2, odd = 1;
int arr[51][51];
int next(int type) {
  if (type) {
    odd += 2;
    return odd - 2;
  }
  even += 2;
  return even - 2;
}
int main() {
  int a;
  scanf("%d", &a);
  int st = a / 2 + 1, en = a / 2 + 1;
  for (int i = 1; i <= a / 2; i++) {
    for (int j = st; j <= en; j++) arr[i][j] = next(1);
    st--;
    en++;
  }
  st = a / 2 + 1;
  en = a / 2 + 1;
  for (int i = a; i > a / 2; i--) {
    for (int j = st; j <= en; j++) arr[i][j] = next(1);
    st--;
    en++;
  }
  for (int i = 1; i <= a; i++) {
    for (int j = 1; j <= a; j++) {
      if (!arr[i][j]) arr[i][j] = next(0);
      printf("%d ", arr[i][j]);
    }
    printf("\n");
  }
  return 0;
}