#include <iostream>
using namespace std;
int main()
{
int i, j, k;
int x;
int check_arr[10];
int play_arr[9][9];
while (cin.peek() != EOF)
{
star:
//輸入數獨
for (i=0; i<9; i++)
{
for (j=0; j<9; j++)
{
cin >> play_arr[i][j];
}
}
//輸入判斷值
for (x=0; x<10; x++)
{
check_arr[x] = -1;
}
//判斷行
for (i=0; i<9; i++)
{
for (j=0; j<9; j++)
{
if (check_arr[play_arr[i][j]] == -1)
{
check_arr[play_arr[i][j]] = 1;
}
else
{
cout << "no" << endl;
goto star;
}
}
for (k=0; k<10; k++)
{
check_arr[k] = -1;
}
}
//判斷列
for (i=0; i<9; i++)
{
for (j=0; j<9; j++)
{
if (check_arr[play_arr[j][i]] == -1)
{
check_arr[play_arr[j][i]] = 1;
}
else
{
cout << "no" << endl;
goto star;
}
}
for (k=0; k<10; k++)
{
check_arr[k] = -1;
}
}
//判斷九宮格
int xx, yy;
for (i=0; i<9; i++)
{
switch (i)
{
case 0:
xx = 0;
yy = 0;
break;
case 1:
xx = 0;
yy = 3;
break;
case 2:
xx = 0;
yy = 6;
break;
case 3:
xx = 3;
yy = 0;
break;
case 4:
xx = 3;
yy = 3;
break;
case 5:
xx = 3;
yy = 6;
break;
case 6:
xx = 6;
yy = 0;
break;
case 7:
xx = 6;
yy = 3;
break;
case 8:
xx = 6;
yy = 6;
break;
}
for (j=0; j<3; j++)
{
for (k=0; k<3; k++)
{
if (check_arr[play_arr[xx+j][yy+k]] == -1)
{
check_arr[play_arr[xx+j][yy+k]] = 1;
}
else
{
cout << "no" << endl;
goto star;
}
}
}
for (x=0; x<10; x++)
{
check_arr[x] = -1;
}
}
cout << "yes" << endl;
}
return 0;
}