#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int i = 1;
int j = n - 1;
int k = 0;
int a = 0;
int array[n][n];
while (i <= n*n)
{
array[k][k] = i;
cout << k << ' ' << k << ' ' << i << endl;
i++;
array[k][n-k -1] = i;
cout << k << ' ' << n-k-1 << ' ' << i << endl;
i++;
array[n-k-1][n-k - 1 ] = i;
cout << n-k-1 << ' ' << n-k-1 << ' ' << i << endl;
i++;
array[n-k-1][k] = i;
cout << n-k-1 << ' ' << k << ' ' << i << endl;
i++;
if (i > n*n)
break;
while (a < j - 1)
{
array[k][k + a + 1] = i;
i++;
cout << k << ' ' << k+a+1 << ' ' << i << endl;
array[k + a + 1][n-k-1] = i;
i++;
cout << k+a+1 << ' ' <<n-k-1 << ' ' << i << endl;
array[n - k - 1][n - k - a - 2] = i;
i++;
cout << n - k - 1 << ' ' << n - k - a - 2 << ' ' << i << endl;
array[n-k-a-2][k] = i;
a++;
i++;
cout << n-k-a-2 << ' ' << k << ' ' << i << endl;
}
i++;
//a = 0;
k++;
j--;
}
k = 0;
j = 0;
while(k < n)
{
while(j < n)
{
cout << array[k][j] << " ";
j++;
}
k ++;
j = 0;
cout << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkKewogICAgaW50IG47CiAgICBjaW4gPj4gbjsKICAgIGludCBpID0gMTsKICAgIGludCBqID0gbiAtIDE7CiAgICBpbnQgayA9IDA7CiAgICBpbnQgYSA9IDA7CiAgICBpbnQgYXJyYXlbbl1bbl07CiAgICB3aGlsZSAoaSA8PSBuKm4pCiAgICB7CiAgICAgICAgYXJyYXlba11ba10gPSBpOwogICAgICAgIGNvdXQgPDwgayA8PCAnICcgPDwgayA8PCAnICcgPDwgaSA8PCBlbmRsOwogICAgICAgIGkrKzsKICAgICAgICBhcnJheVtrXVtuLWsgLTFdID0gaTsKICAgICAgICBjb3V0IDw8IGsgPDwgJyAnIDw8IG4tay0xIDw8ICcgJyA8PCBpIDw8IGVuZGw7CiAgICAgICAgaSsrOwogICAgICAgIGFycmF5W24tay0xXVtuLWsgLSAxIF0gPSBpOwogICAgICAgIGNvdXQgPDwgbi1rLTEgPDwgJyAnIDw8IG4tay0xIDw8ICcgJyA8PCBpIDw8ICBlbmRsOwogICAgICAgIGkrKzsKICAgICAgICBhcnJheVtuLWstMV1ba10gPSBpOwogICAgICAgIGNvdXQgPDwgbi1rLTEgPDwgJyAnIDw8IGsgPDwgJyAnIDw8IGkgPDwgIGVuZGw7CiAgICAgICAgaSsrOwogICAgICAgIGlmIChpID4gbipuKQogICAgICAgICAgICBicmVhazsKICAgICAgICB3aGlsZSAoYSA8IGogLSAxKQogICAgICAgIHsKICAgICAgICAgICAgYXJyYXlba11bayArIGEgKyAxXSA9IGk7CiAgICAgICAgICAgIGkrKzsKICAgICAgICBjb3V0IDw8IGsgPDwgJyAnIDw8IGsrYSsxIDw8ICcgJyA8PCBpIDw8ICBlbmRsOwogICAgICAgICAgICBhcnJheVtrICsgYSArIDFdW24tay0xXSA9IGk7CiAgICAgICAgICAgIGkrKzsKICAgICAgICBjb3V0IDw8IGsrYSsxIDw8ICcgJyA8PG4tay0xIDw8ICcgJyA8PCBpIDw8ICBlbmRsOwogICAgICAgICAgICBhcnJheVtuIC0gayAtIDFdW24gLSBrIC0gYSAtIDJdID0gaTsKICAgICAgICAgICAgaSsrOwogICAgICAgIGNvdXQgPDwgbiAtIGsgLSAxIDw8ICcgJyA8PCBuIC0gayAtIGEgLSAyIDw8ICcgJyA8PCBpIDw8ICBlbmRsOwogICAgICAgICAgICBhcnJheVtuLWstYS0yXVtrXSA9IGk7CiAgICAgICAgICAgIGErKzsKICAgICAgICAgICAgaSsrOwogICAgICAgIGNvdXQgPDwgbi1rLWEtMiA8PCAnICcgPDwgayA8PCAnICcgPDwgaSA8PCAgZW5kbDsKICAgICAgICB9CiAgICAgICAgaSsrOwogICAgICAgIC8vYSA9IDA7CiAgICAgICAgaysrOwogICAgICAgIGotLTsKICAgIH0KICAgIGsgPSAwOwogICAgaiA9IDA7CiAgICB3aGlsZShrIDwgbikKICAgIHsKICAgICAgICB3aGlsZShqIDwgbikKICAgICAgICB7CiAgICAgICAgICAgIGNvdXQgPDwgYXJyYXlba11bal0gPDwgIiAiOwogICAgICAgICAgICBqKys7CiAgICAgICAgfQogICAgICAgIGsgKys7CiAgICAgICAgaiA9IDA7CiAgICAgICAgY291dCA8PCBlbmRsOwogICAgfQogICAgcmV0dXJuIDA7Cn0K