/*#include <stdio.h>
#include <stdlib.h>
int min(int x, int y)
{
if(x>y)
return y;
return x;
}
int main()
{
int arr[4][4]={}, i, j;
scanf("%d %d %d %d %d %d %d %d", &arr[1][1], &arr[2][1], &arr[1][2], &arr[3][1], &arr[2][2], &arr[1][3], &arr[3][2], &arr[2][3]);
printf(" %d\n %d %d\n%d %d %d\n %d %d\n *\n", arr[1][1], arr[2][1], arr[1][2], arr[3][1], arr[2][2], arr[1][3], arr[3][2], arr[2][3]);
char c[2];
int curx=3, cury=3, tempx, tempy;
int t=20;
while(t--)
{
tempx=curx, tempy=cury;
scanf("%s", c);
if(c[0]=='b'&&c[1]=='l')
{
curx--;
if(curx<1)
{
curx++;
printf("error\n");
continue;
}
arr[tempx][tempy]=arr[curx][cury];
arr[curx][cury]=10;
}
if(c[0]=='b'&&c[1]=='r')
{
cury--;
if(cury<1)
{
cury++;
printf("error\n");
continue;
}
arr[tempx][tempy]=arr[curx][cury];
arr[curx][cury]=10;
}
if(c[0]=='t'&&c[1]=='l')
{
cury++;
if(cury>3)
{
cury--;
printf("error\n");
continue;
}
arr[tempx][tempy]=arr[curx][cury];
arr[curx][cury]=10;
}
if(c[0]=='t'&&c[1]=='r')
{
curx++;
if(curx>3)
{
curx--;
printf("error\n");
continue;
}
arr[tempx][tempy]=arr[curx][cury];
arr[curx][cury]=10;
}
printf(" ");
if(arr[1][1]!=10){
printf("%d\n", arr[1][1]);
}
else
{
printf("*\n");
}
printf(" ");
if(arr[2][1]!=10){
printf("%d ", arr[2][1]);
}
else
{
printf("* ");
}
if(arr[1][2]!=10){
printf("%d\n", arr[1][2]);
}
else
{
printf("*\n");
}
if(arr[3][1]!=10){
printf("%d ", arr[3][1]);
}
else
{
printf("* ");
}
if(arr[2][2]!=10){
printf("%d ", arr[2][2]);
}
else
{
printf("* ");
}
if(arr[1][3]!=10){
printf("%d\n", arr[1][3]);
}
else
{
printf("*\n");
}
printf(" ");
if(arr[3][2]!=10){
printf("%d ", arr[3][2]);
}
else
{
printf("* ");
}
if(arr[2][3]!=10){
printf("%d\n", arr[2][3]);
}
else
{
printf("*\n");
}
printf(" ");
if(arr[3][3]!=10){
printf("%d", arr[3][3]);
}
else
{
printf("*");
}
printf("\n");
}
}
*/
#include <stdio.h>
int arr[6][6]= {};
#define INF 987654321
int visited[6][6];
void dfs(int x, int y)
{
if(x<1||y<1||x>4||y>4)
return ;
if(visited[x][y])
return ;
visited[x][y]=1;
if(arr[x+1][y]==arr[x][y])
dfs(x+1, y);
if(arr[x-1][y]==arr[x][y])
dfs(x-1, y);
if(arr[x][y+1]==arr[x][y])
dfs(x, y+1);
if(arr[x][y-1]==arr[x][y])
dfs(x, y-1);
arr[x][y]=INF;
}
int main()
{
memset(arr, -1, sizeof(arr));
for(int i=1; i<=4; i++)
for(int j=1; j<=4; j++)
scanf("%d", &arr[i][j]);
for(int i=1;i<=4;i++)
{
for(int j=1;j<=4;j++)
printf("%d ", arr[i][j]);
printf("\n");
}
int a, b, c, d;
scanf("%d %d %d %d", &a, &b, &c, &d);
int temp=arr[a][b];
arr[a][b]=arr[c][d];
arr[c][d]=temp;
int t[6][6];
while(1)
{
memset(visited, 0, sizeof(visited));
for(int i=1;i<=4;i++)
{
for(int j=1;j<=4;j++)
t[i][j]=arr[i][j];
}
for(int i=1; i<=4; i++)
{
for(int j=1; j<=4; j++)
{
if(!visited[i][j]&&arr[i][j]==arr[i+1][j]||arr[i][j]==arr[i][j+1])
{
dfs(i, j);
}
}
}
for(int i=1;i<=4;i++)
{
for(int j=1;j<=4;j++)
{
if(arr[i][j]!=INF&&arr[i+1][j]==INF)
{
arr[i+1][j]=arr[i][j];
arr[i][j]=INF;
}
}
}
int boo=1;
for(int i=1;i<=4;i++)
{
for(int j=1;j<=4;j++)
{
if(arr[i][j]!=t[i][j])
boo=0;
}
}
if(boo)
{
for(int i=1;i<=4;i++)
{
for(int j=1;j<=4;j++)
{
if(arr[i][j]==INF)
{
printf("* ");
}
else
{
printf("%d ", arr[i][j]);
}
}
printf("\n");
}
return 0;
}
}
}



