#include <iostream>
#include <cstdio>
using namespace std;
  int a[10000][10000];
void makeframe(int n,int x){
   if (n == 2*x - 1) return;
  else{ 
    for(int i = x; i < n-x; i++){
       a[x][i] = (n-2*x)*(n-2*x) - 2*(n-2*x) + 2 - i + x;
    }
    for(int i = x; i < n-x; i++){
       a[i][x] = (n-2*x)*(n-2*x) - 2*(n-2*x) + 2 + i - x;
    }
    for(int i = x; i < n-x; i++){
       a[n-1-x][i] = (n-2*x)*(n-2*x) - n+2*x + 1 + i - x;
    }
    for(int i = x; i < n - 1-x; i++){
       a[i][n-1-x] = (n-2*x)*(n-2*x) - 3*(n-2*x) + 3 - i + x;
    }
 }
}

int main(){
  freopen("F.in","r",stdin);
  freopen("F.out","w",stdout);
  int n;
  cin>>n;
  if (n>1){
   memset(a,0,n);
  
   for(int i = 0; i < (n+1)/2; i++)
     makeframe(n,i);
      
   
   for(int i = 0 ;i < n ;i++){
      for(int j = 0 ;j < n; j++){
         cout<<a[i][j]<<" ";
      }
      cout<<endl;
   }
  }
  else cout<<"1";
  return 0;
}

