#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
#include <set>
using namespace std;
int T;
int n;
set<vector<int> > mp;
struct Step {
int i, j, k;
};
vector<Step> step;
bool flag = false;
void out() {
cout << "Huoyu\n";
cout << step.size() << "\n";
for(auto i : step) {
cout << i.i << " " << i.j << " " << i.k << "\n";
}
}
void dfs(vector<int> x) {
if(flag) return;
if(x.size() == 1) {
flag = true;
out();
return;
}
if(mp.count(x) || x.size() < 3) return;
mp.insert(x);
vector <int> tmp = x;
int len = x.size();
for(int i = 0; i < len; i++)
for(int j = i + 1; j < len; j++)
for(int k = j + 1; k < len; k++)
if((x[i] ^ x[j] ^ x[k]) == 0) {
step.push_back(Step{i+1, j+1, k+1});
int s = 0;
for(int q = i; q <= k; q++) s ^= x[q];
x.insert(x.begin() + i, s);
x.erase(x.begin() + i + 1, x.begin() + k + 2);
dfs(x);
x = tmp;
step.pop_back();
}
}
int main() {
cin >> T;
while(T--) {
cin >> n;
vector<int> a(n);
mp.clear();
step.clear();
flag = false;
for(auto &i : a) cin >> i;
dfs(a);
if(!flag) cout << "Shuiniao\n";
}
return 0;
}