#include <vector>
#include <iostream>
using namespace std;
class circle_number
{
   public:
      void show();
      void sequence();
      circle_number(int);
   protected:
      vector<vector<int>> vec;
      int num, loop, range, cur_number=0;
};
int main(int argc, char* argv[])
{
    int lim=10;
    if ( argc > 1 ) lim=stoi(argv[1]);
    circle_number number(lim);
    number.sequence();
    number.show();
    return 0;
}
circle_number::circle_number(int n)
{
   num=n;
   range=num-1;
   loop=num%2?(num+1)/2:num/2;
   vec.assign(num, vector<int>());
   for (int i=0; i!=num; ++i)
        vec[i].assign(num,0);
}
void circle_number::show()
{
     for(int row=0; row!=num; ++row)
     {
         for (int col=0; col!=num-1; ++col)
              cout<<vec[row][col]<<" ";
         cout<<vec[row][num-1]<<endl;
     }
}
void circle_number::sequence()
{
     for(int i=0; i!=loop; ++i)
     {
         int len=i;
         int row=i;
         int k=num-2*i;
         int up=cur_number;
         int down=(k == 1)?up:cur_number+k;
         for(int p=0; p<k-2; ++p)
             vec[++row][range-len]=++down;
         for(int j=0; j!=k; ++j,++len)
         {
             vec[i][len]=++up;
             vec[range-i][range-len]=++down;
         }
         for(int d=0; d<k-2; ++d)
         {   
             vec[range-i-d-1][i]=++down;
         }
         cur_number=down;
     }
}