/*
分析:
惭愧,一开始没看出来是拓扑排序。。。
2012-07-31 13:37
*/
分析:
惭愧,一开始没看出来是拓扑排序。。。
2012-07-31 13:37
*/
#include"stdio.h"
#include"string.h"
int ori[10][10];
int map[10][10];
int indegree[10];
int dir[4][2]={0,0, 1,0, 0,1, 1,1};
int Topsort()
{
int k,i,j;
k=0;
while(k<9)
{
for(i=1;i<=9;i++)
{
if(!indegree[i])
{
indegree[i]--;
k++;
for(j=1;j<=9;j++) if(map[i][j]) indegree[j]--;
break;
}
}
if(i>9) return 0;
}
return 1;
}
int main()
{
int z,i,l;
int n_x,n_y;
int base[10][2]={-1,-1, 0,0, 0,1, 0,2, 1,0, 1,1, 1,2, 2,0, 2,1, 2,2};
char str[22];
int ans;
while(scanf("%s",str),strcmp(str,"ENDOFINPUT"))
{
for(i=0;i<4;i++)
for(l=0;l<4;l++)
scanf("%d",&ori[i][l]);
scanf("%s",str);
memset(map,0,sizeof(map));
memset(indegree,0,sizeof(indegree));
for(z=1;z<=9;z++)
{
for(i=0;i<4;i++)
{
n_x=base[z][0]+dir[i][0];
n_y=base[z][1]+dir[i][1];
if(ori[n_x][n_y]!=z && !map[z][ori[n_x][n_y]])
{
map[z][ori[n_x][n_y]]=1;
indegree[ori[n_x][n_y]]++;
}
}
}
ans=Topsort();
if(ans) printf("THESE WINDOWS ARE CLEAN\n");
else printf("THESE WINDOWS ARE BROKEN\n");
}
return 0;
}