1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include <bits/stdc++.h>
#define ll long long
#define pi pair <int,int>
#define fi first
#define se second
using namespace std;
int n, k, m, gold, gold_to_take;
vector < vector <int> > A(20, vector <int> (20));
pi base; vector <pi> Golds, Rocks;
void buy_farmer() { cout << "R FARMER" <<endl; }
void end_round() { cout << "=" <<endl; }
void end_testcase() { cout << "===" <<endl; }
void move(int i0, int j0, int i1, int j1) { cout << "M " << i0 << " " << j0 << " " << i1 << " " << j1 <<endl; }
struct farmer {
	int i = 0, j = 0, str = 0;
};
void testcase_gra() 
{
	gold_to_take = 0;
	cin >> n;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			cin >> A[i][j];
			if (A[i][j] == 0)
				base = {i, j};
			else if (A[i][j] > 0) {
				Golds.push_back({i, j});
				gold_to_take += A[i][j];
			}
			else
				Rocks.push_back({i, j});
		}
	}
	if (Rocks.empty()) {
		m = n / 2;
		gold = 200;
		buy_farmer();
		gold -= 100;
		end_round();
		//vector < vector <bool> > Taken(n, vector <bool> (n, false)); 
		vector <farmer> Farmers;
		farmer far;
		Farmers.push_back(far);
		//Taken[0][0] = true;
		while (gold_to_take > 0) {
			//cout << gold_to_take <<endl;
			for (farmer &f : Farmers) {
				//cout << f.i << " " << f.j << " " << gold_to_take <<endl;
				if (A[f.i][f.j] > 0) {
					gold_to_take -= min(10, A[f.i][f.j]);
					A[f.i][f.j] -= min(10, A[f.i][f.j]);
					end_round();
				}
				else {
					if (f.j+1 < n && f.i % 2 == 0) {
						move(f.i, f.j, f.i, f.j+1);
						f.j++;
						gold_to_take -= min(10, A[f.i][f.j]);
						A[f.i][f.j] -= min(10, A[f.i][f.j]);
						end_round();
					}
					else
					if (f.j == n-1 && f.i % 2 == 0 && f.i != n-1) {
						move(f.i, f.j, f.i+1, f.j);
						f.i++;
						gold_to_take -= min(10, A[f.i][f.j]);
						A[f.i][f.j] -= min(10, A[f.i][f.j]);
						end_round();
					}
					else
					if (f.j-1 >= 0 && f.i % 2 == 1) {
						move(f.i, f.j, f.i, f.j-1);
						f.j--;
						gold_to_take -= min(10, A[f.i][f.j]);
						A[f.i][f.j] -= min(10, A[f.i][f.j]);
						end_round();
					}
					else
					if (f.j == 0 && f.i % 2 == 1 && f.i != n-1) {
						move(f.i, f.j, f.i+1, f.j);
						f.i++;
						gold_to_take -= min(10, A[f.i][f.j]);
						A[f.i][f.j] -= min(10, A[f.i][f.j]);
						end_round();
					}
				}
			}
		}
		for (farmer &f : Farmers) {
			while (f.i > 0) {
				move(f.i, f.j, f.i-1, f.j);
				f.i--;
				end_round();
			}
			while (f.j > 0) {
				move(f.i, f.j, f.i, f.j-1);
				f.j--;
				end_round();
			}
		}
	}
	end_testcase();
	Golds.clear();
	Rocks.clear();
}
int main()
{
	ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
	int Z;
	cin >> Z >> k;
	while (Z--) {
		testcase_gra();
	}
	return 0;
}