#include <iostream>
//W ZADANIU NIE TRZEBA SPRAWDZAĆ CZY KWADRATY ZAWIERAJĄ ROZNE CYFRY ORAZ CZY NA GLOWNYCH PRZEKATNYCH SA ROZNE CYFRY.
using namespace std;
int wczytywanie(int tab[9][9]);
int spr_wiersze(int tab[9][9]);
int spr_kolumny(int tab[9][9]);
int spr_kwadrat(int tab[9][9]);
int t; // liczba testow
int tab[9][9]; // tabela, do ktorej wpiszemy liczby z sudoku.
int main()
{
cin >> t;
for(int test=0; test<t; test++)
{
while(1)
{
if(wczytywanie(tab)==0)
{
cout << "NIE" << endl;
break;
}
if(spr_wiersze(tab)==0)
{
cout << "NIE" << endl;
break;
}
if(spr_kolumny(tab)==0)
{
cout << "NIE"<< endl;
break;
}
if(spr_kwadrat(tab)==0)
{
cout << "NIE" << endl;
break;
}
else
{
cout << "TAK"<< endl;
break;
}
}
}
return 0;
}
int wczytywanie(int tab[9][9]) // wczytujac sprawdzamy, czy wszystkie liczby sa z przedzialu <1;9>
{
int logic=1;
for(int i=0; i<9; i++)
for(int j=0; j<9; j++)
{
cin >>tab[i][j];
if(tab[i][j]<1||tab[i][j]>9)
logic=0;
}
return logic;
}
int spr_wiersze(int tab[9][9])
{
int S;
for(int i=0; i<9; i++)
{
S=0;
for(int j=0; j<9; j++)
S+=tab[i][j];
if(S!=45)
return 0;
}
return 1;
}
int spr_kolumny(int tab[9][9])
{
int S;
for(int j=0; j<9; j++)
{
S=0;
for(int i=0; i<9; i++)
S+=tab[i][j];
if(S!=45)
return 0;
}
return 1;
}
int spr_kwadrat(int tab[9][9])
{
int S=0;
for(int I=0; I<3; I++)
for(int J=0; J<3; J++)
{
int j=0;
for(int i=0; i<3; i++)
{
S+=tab[3*I+i][3*J+j];
if(i==2)
{
j++;
i=-1;
}
if(j==3)
{
if(S!=45)
{
return 0;
}
else
{
i=3;
S=0;
}
}
}
}
return 1;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgovL1cgWkFEQU5JVSBOSUUgVFJaRUJBIFNQUkFXRFpBxIYgQ1pZIEtXQURSQVRZIFpBV0lFUkFKxIQgUk9aTkUgQ1lGUlkgT1JBWiBDWlkgTkEgR0xPV05ZQ0ggUFJaRUtBVE5ZQ0ggU0EgUk9aTkUgQ1lGUlkuCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCB3Y3p5dHl3YW5pZShpbnQgdGFiWzldWzldKTsKaW50IHNwcl93aWVyc3plKGludCB0YWJbOV1bOV0pOwppbnQgc3ByX2tvbHVtbnkoaW50IHRhYls5XVs5XSk7CmludCBzcHJfa3dhZHJhdChpbnQgdGFiWzldWzldKTsKaW50IHQ7IC8vIGxpY3piYSB0ZXN0b3cKaW50IHRhYls5XVs5XTsgLy8gdGFiZWxhLCBkbyBrdG9yZWogd3Bpc3plbXkgbGljemJ5IHogc3Vkb2t1LgppbnQgbWFpbigpCnsKICAgIGNpbiA+PiB0OwogICAgZm9yKGludCB0ZXN0PTA7IHRlc3Q8dDsgdGVzdCsrKQogICAgewogICAgICAgIHdoaWxlKDEpCiAgICAgICAgewogICAgICAgICAgICBpZih3Y3p5dHl3YW5pZSh0YWIpPT0wKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjb3V0IDw8ICJOSUUiIDw8IGVuZGw7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZihzcHJfd2llcnN6ZSh0YWIpPT0wKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjb3V0IDw8ICJOSUUiIDw8IGVuZGw7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZihzcHJfa29sdW1ueSh0YWIpPT0wKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjb3V0IDw8ICJOSUUiPDwgZW5kbDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKHNwcl9rd2FkcmF0KHRhYik9PTApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNvdXQgPDwgIk5JRSIgPDwgZW5kbDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY291dCA8PCAiVEFLIjw8IGVuZGw7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAwOwp9CgppbnQgd2N6eXR5d2FuaWUoaW50IHRhYls5XVs5XSkgLy8gd2N6eXR1amFjIHNwcmF3ZHphbXksIGN6eSB3c3p5c3RraWUgbGljemJ5IHNhIHogcHJ6ZWR6aWFsdSA8MTs5Pgp7CiAgICBpbnQgbG9naWM9MTsKICAgIGZvcihpbnQgaT0wOyBpPDk7IGkrKykKICAgICAgICBmb3IoaW50IGo9MDsgajw5OyBqKyspCiAgICAgICAgewogICAgICAgICAgICBjaW4gPj50YWJbaV1bal07CiAgICAgICAgICAgIGlmKHRhYltpXVtqXTwxfHx0YWJbaV1bal0+OSkKICAgICAgICAgICAgICAgIGxvZ2ljPTA7CgogICAgICAgIH0KICAgIHJldHVybiBsb2dpYzsKfQppbnQgc3ByX3dpZXJzemUoaW50IHRhYls5XVs5XSkKewogICAgaW50IFM7CiAgICBmb3IoaW50IGk9MDsgaTw5OyBpKyspCiAgICB7CiAgICAgICAgUz0wOwogICAgICAgIGZvcihpbnQgaj0wOyBqPDk7IGorKykKICAgICAgICAgICAgUys9dGFiW2ldW2pdOwogICAgICAgIGlmKFMhPTQ1KQogICAgICAgICAgICByZXR1cm4gMDsKICAgIH0KICAgIHJldHVybiAxOwp9CmludCBzcHJfa29sdW1ueShpbnQgdGFiWzldWzldKQp7CiAgICBpbnQgUzsKICAgIGZvcihpbnQgaj0wOyBqPDk7IGorKykKICAgIHsKICAgICAgICBTPTA7CiAgICAgICAgZm9yKGludCBpPTA7IGk8OTsgaSsrKQogICAgICAgICAgICBTKz10YWJbaV1bal07CiAgICAgICAgaWYoUyE9NDUpCiAgICAgICAgICAgIHJldHVybiAwOwogICAgfQogICAgcmV0dXJuIDE7Cn0KCmludCBzcHJfa3dhZHJhdChpbnQgdGFiWzldWzldKQp7CiAgICBpbnQgUz0wOwogICAgZm9yKGludCBJPTA7IEk8MzsgSSsrKQogICAgICAgIGZvcihpbnQgSj0wOyBKPDM7IEorKykKICAgICAgICB7CiAgICAgICAgICAgIGludCBqPTA7CiAgICAgICAgICAgIGZvcihpbnQgaT0wOyBpPDM7IGkrKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUys9dGFiWzMqSStpXVszKkoral07CiAgICAgICAgICAgICAgICBpZihpPT0yKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGorKzsKICAgICAgICAgICAgICAgICAgICBpPS0xOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYoaj09MykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpZihTIT00NSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpPTM7CiAgICAgICAgICAgICAgICAgICAgICAgIFM9MDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgcmV0dXJuIDE7Cn0K
MQo1IDUgNSA1IDUgNSA1IDUgNQo1IDUgNSA1IDUgNSA1IDUgNQo1IDUgNSA1IDUgNSA1IDUgNQo1IDUgNSA1IDUgNSA1IDUgNQo1IDUgNSA1IDUgNSA1IDUgNQo1IDUgNSA1IDUgNSA1IDUgNQo1IDUgNSA1IDUgNSA1IDUgNQo1IDUgNSA1IDUgNSA1IDUgNQo1IDUgNSA1IDUgNSA1IDUgNQo=
1
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5