#include <bits/stdc++.h>
 
using namespace std;
 
const int dx[5] = {-1, 0, 0, 0, 1};
const int dy[5] = {0, -1, 0, 1, 0};
 
int arr[10][10];
int ans[10][10], flip[10][10];
 
int get(int x, int y)
{
    int c = arr[x][y];
    for (int d = 0; d < 5; d++) {
	int x2 = x + dx[d], y2 = y + dy[d];
	if (0 <= x2 && x2 < 10 && 0 <= y2 && y2 < 10) {
	    c += flip[x2][y2];
	}
    }
    return c % 2;
}
 
int calc()
{
    for (int i = 1; i < 10; i++) {
	for(int j = 0; j < 10; j++) {
	    if (get(i-1, j) != 0) {
		flip[i][j] = 1;
	    }
	}
    }
 
    for (int j = 0; j < 10; j++) {
	if (get(9, j) != 0) {
	    return -1;
	}
    }
 
    int res = 0;
    for (int i = 0; i < 10; i++) {
	for (int j = 0; j < 10; j++) {
	    res += flip[i][j];
	}
    }
    return res;
}
 
void solve()
{
    int res = -1;
 
    for (int i = 0; i < (1<<10); i++) { 
	memset(flip, 0, sizeof(flip));
	for (int j = 0; j < 10; j++) {
	    flip[0][10-j-1] = i >> j & 1;
	}
	int num = calc();
	if (num >= 0 && (res < 0 || res > num)) {
	    res = num;
	    memcpy(ans, flip, sizeof(ans));   
	}
    }
 
    for (int i = 0; i < 10; i++) {
	for (int j = 0; j < 10; j++) {
	    printf("%d%c", ans[i][j], j+1 == 10 ? '\n' : ' ');
	}
    }
}
 
int main()
{
    int Tc;
    cin >> Tc;
    while (Tc--) {
	for (int i = 0; i < 10; i++) {
	    for (int j = 0; j < 10; j++) {
		cin >> arr[i][j];
	    }
	}
	solve();
    }
    return 0;
}