// ~~ icebear love atttt ~~
#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int inf = 1e9 + 27092008;
const long long INF = 1e18 + 27092008;
const int N = 1020 + 5;
int n, v[N];
char cur[N], res[N];
int ans;
bitset<N> vis[1 << 2][201][N];
struct State {
int i, j, k, mask;
};
queue<State> states;
void dfs(int mask, int i, int x, int y, int z) {
if (i == n) {
if (mask == (1 << 2) - 1 && ans < x + y + z) {
ans = x + y + z;
for(int i = 0; i < n; i++) res[i] = cur[i];
}
return;
}
if (vis[mask][i][x][y]) return;
vis[mask][i][x][y] = true;
states.push({i, x, y, mask});
cur[i] = 'P';
dfs(mask | (1 << 0), i + 1, x ^ v[i], y, z);
cur[i] = 'V';
dfs(mask | (1 << 1), i + 1, x, y ^ v[i], z);
cur[i] = 'H';
dfs(mask, i + 1, x, y, z ^ v[i]);
}
int main() {
#define task "chemistry"
if (fopen(task".inp", "r")) {
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int subtask; cin >> subtask;
while(cin >> n) {
if (!n) break;
for(int i = 0; i < n; i++) cin >> v[i];
ans = -1;
dfs(0, 0, 0, 0, 0);
for(int i = 0; i < n; i++) cout << res[i];
cout << '\n';
while(!states.empty()) {
auto X = states.front(); states.pop();
vis[X.mask][X.i][X.j][X.k] = false;
}
}
return 0;
}
Ly8gfn4gaWNlYmVhciBsb3ZlIGF0dHR0IH5+CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7CmNvbnN0IGludCBpbmYgPSAxZTkgKyAyNzA5MjAwODsKY29uc3QgbG9uZyBsb25nIElORiA9IDFlMTggKyAyNzA5MjAwODsKY29uc3QgaW50IE4gPSAxMDIwICsgNTsKaW50IG4sIHZbTl07CmNoYXIgY3VyW05dLCByZXNbTl07CmludCBhbnM7CmJpdHNldDxOPiB2aXNbMSA8PCAyXVsyMDFdW05dOwpzdHJ1Y3QgU3RhdGUgewogICAgaW50IGksIGosIGssIG1hc2s7Cn07CnF1ZXVlPFN0YXRlPiBzdGF0ZXM7Cgp2b2lkIGRmcyhpbnQgbWFzaywgaW50IGksIGludCB4LCBpbnQgeSwgaW50IHopIHsKICAgIGlmIChpID09IG4pIHsKICAgICAgICBpZiAobWFzayA9PSAoMSA8PCAyKSAtIDEgJiYgYW5zIDwgeCArIHkgKyB6KSB7CiAgICAgICAgICAgIGFucyA9IHggKyB5ICsgejsKICAgICAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IG47IGkrKykgcmVzW2ldID0gY3VyW2ldOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9CiAgICBpZiAodmlzW21hc2tdW2ldW3hdW3ldKSByZXR1cm47CiAgICB2aXNbbWFza11baV1beF1beV0gPSB0cnVlOwogICAgc3RhdGVzLnB1c2goe2ksIHgsIHksIG1hc2t9KTsKICAgIGN1cltpXSA9ICdQJzsKICAgIGRmcyhtYXNrIHwgKDEgPDwgMCksIGkgKyAxLCB4IF4gdltpXSwgeSwgeik7CiAgICBjdXJbaV0gPSAnVic7CiAgICBkZnMobWFzayB8ICgxIDw8IDEpLCBpICsgMSwgeCwgeSBeIHZbaV0sIHopOwogICAgY3VyW2ldID0gJ0gnOwogICAgZGZzKG1hc2ssIGkgKyAxLCB4LCB5LCB6IF4gdltpXSk7Cn0KCmludCBtYWluKCkgewojZGVmaW5lIHRhc2sgImNoZW1pc3RyeSIKICAgIGlmIChmb3Blbih0YXNrIi5pbnAiLCAiciIpKSB7CiAgICAgICAgZnJlb3Blbih0YXNrIi5pbnAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKHRhc2siLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGludCBzdWJ0YXNrOyBjaW4gPj4gc3VidGFzazsKICAgIHdoaWxlKGNpbiA+PiBuKSB7CiAgICAgICAgaWYgKCFuKSBicmVhazsKICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSBjaW4gPj4gdltpXTsKICAgICAgICBhbnMgPSAtMTsKICAgICAgICBkZnMoMCwgMCwgMCwgMCwgMCk7CiAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IG47IGkrKykgY291dCA8PCByZXNbaV07CiAgICAgICAgY291dCA8PCAnXG4nOwogICAgICAgIHdoaWxlKCFzdGF0ZXMuZW1wdHkoKSkgewogICAgICAgICAgICBhdXRvIFggPSBzdGF0ZXMuZnJvbnQoKTsgc3RhdGVzLnBvcCgpOwogICAgICAgICAgICB2aXNbWC5tYXNrXVtYLmldW1gual1bWC5rXSA9IGZhbHNlOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAwOwp9Cgo=