#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int arraysize;
cout<<"Size: ";
cin>>arraysize;
int a[arraysize][arraysize];
int couter = 1, stepTop = 0, stepLeft = 1, stepBottom = 0, stepRight = 1;
for(int iMain = 0; iMain < ((arraysize / 2) + 1); iMain++)
{
for(int i = stepTop; i < stepTop + 1; i++)
{
for(int j = stepTop; j < (arraysize - stepTop); j++)
{
a[i][j] = couter;
couter++;
}
}
stepTop++;
if(iMain < (arraysize / 2))
{
for(int i = stepRight; i <= (arraysize - stepRight - 1); i++)
{
for(int j = (arraysize - stepRight); j < (arraysize - stepRight + 1); j++)
{
a[i][j] = couter;
couter++;
}
}
stepRight++;
for(int i = (arraysize - 1 - stepBottom); i >= (arraysize - stepBottom - 1); i--)
{
for(int j = (arraysize - 1 - stepBottom); j >= stepBottom; j--)
{
a[i][j] = couter;
couter++;
}
}
stepBottom++;
for(int i = (arraysize - stepLeft - 1); i >= stepLeft; i--)
{
for(int j = stepLeft-1; j < stepLeft; j++)
{
a[i][j] = couter;
couter++;
}
}
stepLeft++;
}
}
for(int i = 0; i < arraysize; i++)
{
for(int j = 0; j < arraysize; j++)
{
cout<<setw(arraysize)<<a[i][j];
cout<<" ";
}
cout<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG1haW4oKQp7CiAgICBpbnQgYXJyYXlzaXplOwogICAgY291dDw8IlNpemU6ICI7CiAgICBjaW4+PmFycmF5c2l6ZTsKICAgIGludCBhW2FycmF5c2l6ZV1bYXJyYXlzaXplXTsKICAgIGludCBjb3V0ZXIgPSAxLCBzdGVwVG9wID0gMCwgc3RlcExlZnQgPSAxLCBzdGVwQm90dG9tID0gMCwgc3RlcFJpZ2h0ID0gMTsKICAgIGZvcihpbnQgaU1haW4gPSAwOyBpTWFpbiA8ICgoYXJyYXlzaXplIC8gMikgKyAxKTsgaU1haW4rKykKICAgIHsKICAgICAgICBmb3IoaW50IGkgPSBzdGVwVG9wOyBpIDwgc3RlcFRvcCArIDE7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGZvcihpbnQgaiA9IHN0ZXBUb3A7IGogPCAoYXJyYXlzaXplIC0gc3RlcFRvcCk7IGorKykKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIGFbaV1bal0gPSBjb3V0ZXI7CiAgICAgICAgICAgICAgICBjb3V0ZXIrKzsKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgc3RlcFRvcCsrOwoKICAgICAgICBpZihpTWFpbiA8IChhcnJheXNpemUgLyAyKSkKICAgICAgICB7CiAgICAgICAgICAgIGZvcihpbnQgaSA9IHN0ZXBSaWdodDsgaSA8PSAoYXJyYXlzaXplIC0gc3RlcFJpZ2h0IC0gMSk7IGkrKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBqID0gKGFycmF5c2l6ZSAtIHN0ZXBSaWdodCk7IGogPCAoYXJyYXlzaXplIC0gc3RlcFJpZ2h0ICsgMSk7IGorKykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBhW2ldW2pdID0gY291dGVyOwogICAgICAgICAgICAgICAgICAgIGNvdXRlcisrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHN0ZXBSaWdodCsrOwoKICAgICAgICAgICAgZm9yKGludCBpID0gKGFycmF5c2l6ZSAtIDEgLSBzdGVwQm90dG9tKTsgaSA+PSAoYXJyYXlzaXplIC0gc3RlcEJvdHRvbSAtIDEpOyBpLS0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaiA9IChhcnJheXNpemUgLSAxIC0gc3RlcEJvdHRvbSk7IGogPj0gc3RlcEJvdHRvbTsgai0tKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGFbaV1bal0gPSBjb3V0ZXI7CiAgICAgICAgICAgICAgICAgICAgY291dGVyKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3RlcEJvdHRvbSsrOwoKICAgICAgICAgICAgZm9yKGludCBpID0gKGFycmF5c2l6ZSAtIHN0ZXBMZWZ0IC0gMSk7IGkgPj0gc3RlcExlZnQ7IGktLSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaiA9IHN0ZXBMZWZ0LTE7IGogPCBzdGVwTGVmdDsgaisrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGFbaV1bal0gPSBjb3V0ZXI7CiAgICAgICAgICAgICAgICAgICAgY291dGVyKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3RlcExlZnQrKzsKICAgICAgICB9CiAgICB9CgoKZm9yKGludCBpID0gMDsgaSA8IGFycmF5c2l6ZTsgaSsrKQogICAgewogICAgICAgIGZvcihpbnQgaiA9IDA7IGogPCBhcnJheXNpemU7IGorKykKICAgICAgICB7CiAgICAgICAgICAgIGNvdXQ8PHNldHcoYXJyYXlzaXplKTw8YVtpXVtqXTsKICAgICAgICAgICAgY291dDw8IiAiOwogICAgICAgIH0KICAgICAgICBjb3V0PDxlbmRsOwogICAgfQoKICAgIHJldHVybiAwOwp9