#include <vector>
#include <iostream>
#define c(i,j) )std::cout<<m[i][j]<<" ";
using M= std:: vector < std:: vector < int >> ; void s( M& m,int h) { int i,n= m.size ( ) ,k= n- h- 1 ; if ( n> 2 * h) { for ( i= h; i<= k; c( h,i++ ) for ( i= h+ 1 ; i<= k; c( i++ ,k) for ( i= k- 1 ; i>= h; c( k,i-- ) for ( i= k- 1 ; i> h; c( i-- ,h) s( m,h+ 1 ) ; } }
M x{ { 1 , 2 , 3 , 4 } , { 12 , 13 , 14 , 5 } , { 11 , 16 , 15 , 6 } , { 10 , 9 , 8 , 7 } } ;
M y{ { 1 , 2 , 3 } , { 8 , 9 , 4 } , { 7 , 6 , 5 } } ;
int main( )
{
s( x,0 ) ;
std:: cout << "\n " ;
s( y,0 ) ;
std:: cout << "\n " ;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKI2RlZmluZSBjKGksaikgKXN0ZDo6Y291dDw8bVtpXVtqXTw8IiAiOwp1c2luZyBNPXN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGludD4+O3ZvaWQgcyhNJm0saW50IGgpe2ludCBpLG49bS5zaXplKCksaz1uLWgtMTtpZihuPjIqaCl7Zm9yKGk9aDtpPD1rO2MoaCxpKyspZm9yKGk9aCsxO2k8PWs7YyhpKyssaylmb3IoaT1rLTE7aT49aDtjKGssaS0tKWZvcihpPWstMTtpPmg7YyhpLS0saClzKG0saCsxKTt9fQoKTSB4e3sxLCAyLCAzLCA0fSwgezEyLCAxMywgMTQsIDV9LCB7MTEsIDE2LCAxNSwgNn0sIHsxMCwgOSwgOCwgN319OwpNIHl7ezEsIDIsIDN9LCB7OCwgOSwgNH0sIHs3LCA2LCA1fX07CgppbnQgbWFpbigpCnsKICAgIHMoeCwwKTsKICAgIHN0ZDo6Y291dCA8PCAiXG4iOwogICAgcyh5LDApOwogICAgc3RkOjpjb3V0IDw8ICJcbiI7Cn0KCg==