#include<iostream>
#include<iomanip>
#include <cstring>
using namespace std;
int main()
{
int n;
// cout<< "Please enter an odd integer: ";
cin>>n;
int MagicSquare[n][n];
int newRow,
newCol;
memset(MagicSquare, 0, sizeof(MagicSquare));
// Set the indices for the middle of the bottom i
int i =0 ;
int j= n / 2;
// Fill each element of the array using the magic array
for ( int value = 1; value <= n*n; value++ )
{
MagicSquare[i][j] = value;
// Find the next cell, wrapping around if necessary.
newRow = (i + 1) % n;
newCol = (j + 1) % n;
// If the cell is empty, remember those indices for the
// next assignment.
if ( MagicSquare[newRow][newCol] == 0 )
{
i = newRow;
j = newCol;
}
else
{
// The cell was full. Use the cell above the previous one.
i = (i - 1 + n) % n;
}
}
for(int x=0; x<n; x++)
{
for(int y=0; y<n; y++)
cout << MagicSquare[x][y]<<" ";
cout << endl;
}
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGlvbWFuaXA+CiNpbmNsdWRlIDxjc3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKQp7CiAgaW50IG47CgovLyBjb3V0PDwgIlBsZWFzZSBlbnRlciBhbiBvZGQgaW50ZWdlcjogIjsKICBjaW4+Pm47CgogIGludCBNYWdpY1NxdWFyZVtuXVtuXTsKCgogIGludCBuZXdSb3csCiAgbmV3Q29sOwogICBtZW1zZXQoTWFnaWNTcXVhcmUsIDAsIHNpemVvZihNYWdpY1NxdWFyZSkpOwogIC8vIFNldCB0aGUgaW5kaWNlcyBmb3IgdGhlIG1pZGRsZSBvZiB0aGUgYm90dG9tIGkKICBpbnQgaSA9MCA7CiAgaW50IGo9IG4gLyAyOwoKICAvLyBGaWxsIGVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgdXNpbmcgdGhlIG1hZ2ljIGFycmF5CiAgZm9yICggaW50IHZhbHVlID0gMTsgdmFsdWUgPD0gbipuOyB2YWx1ZSsrICkKICB7CiAgICAgTWFnaWNTcXVhcmVbaV1bal0gPSB2YWx1ZTsKICAgICAvLyBGaW5kIHRoZSBuZXh0IGNlbGwsIHdyYXBwaW5nIGFyb3VuZCBpZiBuZWNlc3NhcnkuCiAgICAgbmV3Um93ID0gKGkgKyAxKSAlIG47CiAgICAgbmV3Q29sID0gKGogKyAxKSAlIG47CiAgICAgLy8gSWYgdGhlIGNlbGwgaXMgZW1wdHksIHJlbWVtYmVyIHRob3NlIGluZGljZXMgZm9yIHRoZQogICAgIC8vIG5leHQgYXNzaWdubWVudC4KICAgICBpZiAoIE1hZ2ljU3F1YXJlW25ld1Jvd11bbmV3Q29sXSA9PSAwICkKICAgICB7CiAgICAgICAgaSA9IG5ld1JvdzsKICAgICAgICBqID0gbmV3Q29sOwogICAgIH0KICAgICBlbHNlCiAgICAgewogICAgICAgIC8vIFRoZSBjZWxsIHdhcyBmdWxsLiBVc2UgdGhlIGNlbGwgYWJvdmUgdGhlIHByZXZpb3VzIG9uZS4KICAgICAgICBpID0gKGkgLSAxICsgbikgJSBuOwogICAgIH0KCiAgfQoKCiAgZm9yKGludCB4PTA7IHg8bjsgeCsrKQogIHsKICAgICBmb3IoaW50IHk9MDsgeTxuOyB5KyspCiAgICAgICAgIGNvdXQgPDwgTWFnaWNTcXVhcmVbeF1beV08PCIgIjsKICAgICBjb3V0IDw8IGVuZGw7CiAgfQp9Cg==