- #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