#include <bits/stdc++.h>
using namespace std;

typedef pair<int, int> PII;

int a[30];

int main()
{
	ios::sync_with_stdio(false);
	int T, cas, n;
	cin >> T;
	while (T--) {
		cin >> cas >> n;
		for (int i = 0; i < n; i++) {
			cin >> a[i];
		}
		vector< vector<int> > ans;
		int flag = 1;
		vector<int> Q;
		for (int i = 0; i < n; i++) Q.push_back(i);
		while (1) {
			int c0 = 0, c1 = 0;
			for (int i = 0; i < n; i++) {
				c0 += (a[i] != 0);
				c1 += (a[i] == 1);
			}
			if (c0 == 0) break;
			if (c1 == 0) {
				flag = 0;
				break;
			}
			//cout << "#" << Q.size() << endl;
			for (int i = 0; i < n; i++) {
				if (a[i] != 1) continue;
				if (Q.size() < 3) {
					flag = 0;
					break;
				}
				for (int j = 0; j < Q.size(); j++) {
					if (Q[j] == i) {
						vector<int> now = {i, Q[(j - 1 + Q.size()) % Q.size()], Q[(j + 1) % Q.size()]};
						ans.push_back(now);	
						//cout << i << ' ' << Q[(j - 1 + Q.size()) % Q.size()] << ' ' << Q[(j + 1) % Q.size()] << endl;
						a[i]--;
						a[Q[(j - 1 + Q.size()) % Q.size()]]--;
						a[Q[(j + 1) % Q.size()]]--;
						for (int k = 0; k < Q.size(); k++) {
							if (a[Q[k]] == 0) {
								for (int t = k + 1; t < Q.size(); t++) {
									Q[t - 1] = Q[t];
								}
								Q.resize(Q.size() - 1);
							} 
						}
						break;
					}
				}
			}
			if (!flag) break;
		}
		if (flag == 0 || ans.size() != n - 2) {
			printf("%d N\n", cas);
			continue;
		}
		printf("%d Y\n", cas);
		for (int i = 0; i < ans.size(); i++) {
			sort(ans[i].begin(), ans[i].end());
		}
		sort(ans.begin(), ans.end());
		for (int i = 0; i < ans.size(); i++) {
			for (int j = 0; j < 3; j++) {
				if (j > 0) printf(" ");
				printf("%d", ans[i][j] + 1);
			}
			puts("");
		}
	}
	return 0;
}
