import java.util.Scanner;
public class Main {
private static Scanner in = new Scanner(System.in);
public static void main(String[] args) {
int T;
while (in.hasNext()) {
T = in.nextInt();
int[][] array = new int[3][3];
for (int i = 0; i < T; i++) {
input(array);
// print();
int x = win(1, array), y = win(2, array);
if (x != 0) {
System.out.println(x);
continue;
}
if (y != 0) {
System.out.println(y);
continue;
}
System.out.println(dfs(0, array));
}
}
}
private static int dfs(int peo, int[][] array) {
if (spa(array) == 0) {
return 0;
}
int Max = -10, Min = 10;
for (int i = 0; i < 3; i++) {
for (int j = 0, w; j < 3; j++) {
if (array[i][j] == 0) {
array[i][j] = peo + 1;
w = win(peo + 1, array);
if (w != 0) {
array[i][j] = 0;
return w > 0 ? Math.max(Max, w) : Math.min(Min, w);
}
if (peo == 0) {
Max = Math.max(Max, dfs(1, array));
} else {
Min = Math.min(Min, dfs(0, array));
}
array[i][j] = 0;
}
}
}
return (peo != 0) ? Min : Max;
}
private static int win(int f, int[][] array) {
int wi = 0, ans = 1;
if (hok(0, f, array) || hok(1, f, array) || hok(2, f, array)) {
wi = 1;
}
if (lok(0, f, array) || lok(1, f, array) || lok(2, f, array)) {
wi = 1;
}
if (array[0][0] == f && array[0][0] == array[1][1] && array[1][1] == array[2][2]) {
wi = 1;
}
if (array[0][2] == f && array[0][2] == array[1][1] && array[1][1] == array[2][0]) {
wi = 1;
}
if (wi == 0) {
return 0;
}
ans += spa(array);
return (f == 1) ? ans : -ans;
}
private static boolean lok(int l, int f, int[][] array) {
return array[0][l] == f && array[0][l] == array[1][l] && array[1][l] == array[2][l];
}
private static boolean hok(int h, int f, int[][] array) {
return array[h][0] == f && array[h][0] == array[h][1] && array[h][1] == array[h][2];
}
private static int spa(int[][] array) {
int sum = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (array[i][j] == 0) {
sum++;
}
}
}
return sum;
}
private static void input(int[][] array) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
array[i][j] = in.nextInt();
}
}
}
}