#include <fstream>
#define I_F "magic.in"
#define O_F "magic.out"
using namespace std;
short map[5][5];
bool flag[17];
short x,y;
ofstream fout(O_F);
void Input();
void Output();
bool Pd(short m, short n, short x);
void Search(short m, short n);
int main()
{
Input();
Search(1,1);
fout.close();
}
void Input()
{
ifstream fin(I_F);
fin>>x>>y;
fin.close();
map[x][y]=1;
}
void Output()
{
short i,j;
for (i=1; i<=4; fout<<map[i++][4]<<'\n')
for (j=1; j<4; fout<<map[i][j++]<<' ');
fout<<'\n';
}
bool Pd(short m, short n, short x)
{
if ((n==4)&&(map[m][1]+map[m][2]+map[m][3]+x!=34))
return false;
if ((m==4)&&(map[1][n]+map[2][n]+map[3][n]+x!=34))
return false;
if ((m==2)&&(n==2)&&(map[1][1]+map[1][2]+map[2][1]+x!=34))
return false;
if ((m==2)&&(n==4)&&(map[1][3]+map[1][4]+map[2][3]+x!=34))
return false;
if ((m==3)&&(n==3)&&(map[2][2]+map[2][3]+map[3][2]+x!=34))
return false;
if ((m==4)&&(n==2)&&(map[3][1]+map[3][2]+map[4][1]+x!=34))
return false;
if ((m==4)&&(n==4)&&(map[3][3]+map[3][4]+map[4][3]+x!=34))
return false;
if ((m==4)&&(n==1)&&(map[1][4]+map[2][3]+map[3][2]+x!=34))
return false;
if ((m==4)&&(n==4)&&(map[1][1]+map[2][2]+map[3][3]+x!=34))
return false;
if ((m==4)&&(n==4)&&(map[1][1]+map[1][4]+map[4][1]+x!=34))
return false;
return true;
}
void Search(short m, short n)
{
if (m<5)
{
if (map[m][n]==1)
Search(m+n/4,n%4+1);
else
for (short i=2; i<17; i++)
if ((!flag[i])&&(Pd(m,n,i)))
{
flag[i]=true;
map[m][n]=i;
Search(m+n/4,n%4+1);
flag[i]=false;
}
}
else
Output();
}