//havel hakimi algorithm
#include<bits/stdc++.h>
using namespace std;
int main(){
int t,n,i,temp,neg,k,zc,m=INT_MIN;
long long sum;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
zc=0;
sum=0;
vector<int>d;
for(i=0;i<n;i++){
scanf("%d",&temp);
d.push_back(temp);
sum+=temp;
if(temp>m)m=temp;
if(!temp)zc++;
}
if(n==0)printf("HAPPY\n");
else if(m>n)printf("SAD\n");
else if(sum%2){
printf("SAD\n");
}
else{
while(1){
// printf("looping %d\n",d.size());
if(zc==d.size()){
// printf("zeros\n");
break;
}
neg=0;
zc=0;
sort(d.rbegin(),d.rend());
k=d[0];
d.erase(d.begin());
for(i=0;i<k;i++){
// printf("d now %d at %d k=%d\n",d[i],i,k);
d[i]--;
if(d[i]<0){
neg++;
// printf("found neg\n");
break;
}
if(!d[i]){zc++;}
}
if(neg>0)break;
}
if(zc==d.size())printf("HAPPY\n");
else if(neg>0)printf("SAD\n");
}
}
return 0;
}
Ly9oYXZlbCBoYWtpbWkgYWxnb3JpdGhtCgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKXsKIGludCB0LG4saSx0ZW1wLG5lZyxrLHpjLG09SU5UX01JTjsKIGxvbmcgbG9uZyBzdW07CiAKIHNjYW5mKCIlZCIsJnQpOwogd2hpbGUodC0tKXsKICAgc2NhbmYoIiVkIiwmbik7CiAgIHpjPTA7CiAgIHN1bT0wOwogICB2ZWN0b3I8aW50PmQ7CiAgIGZvcihpPTA7aTxuO2krKyl7CiAgICAgIHNjYW5mKCIlZCIsJnRlbXApOwogICAgICBkLnB1c2hfYmFjayh0ZW1wKTsKICAgICAgc3VtKz10ZW1wOwogICAgICBpZih0ZW1wPm0pbT10ZW1wOwogICAgICBpZighdGVtcCl6YysrOwogICAgfQogICAgaWYobj09MClwcmludGYoIkhBUFBZXG4iKTsKICAgIGVsc2UgaWYobT5uKXByaW50ZigiU0FEXG4iKTsKICAgIGVsc2UgaWYoc3VtJTIpewogICAgICAgIHByaW50ZigiU0FEXG4iKTsKICAgIH0KICAgIGVsc2V7CiAgICAgICB3aGlsZSgxKXsKICAgICAgICAgICAvLyBwcmludGYoImxvb3BpbmcgJWRcbiIsZC5zaXplKCkpOwogICAgICAgICAgaWYoemM9PWQuc2l6ZSgpKXsKICAgICAgICAgICAgICAgLy8gcHJpbnRmKCJ6ZXJvc1xuIik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICAgICAgbmVnPTA7CiAgICAgICAgICAgIHpjPTA7CiAgICAgICAgIHNvcnQoZC5yYmVnaW4oKSxkLnJlbmQoKSk7CiAgICAgICAgIGs9ZFswXTsKICAgICAgICAgZC5lcmFzZShkLmJlZ2luKCkpOwogICAgICAgICBmb3IoaT0wO2k8aztpKyspewogICAgICAgICAgIC8vICBwcmludGYoImQgbm93ICVkIGF0ICVkIGs9JWRcbiIsZFtpXSxpLGspOwogICAgICAgICAgICAgZFtpXS0tOwogICAgICAgICAgICBpZihkW2ldPDApewogICAgICAgICAgICAgICBuZWcrKzsKICAgICAgICAgICAgIC8vICBwcmludGYoImZvdW5kIG5lZ1xuIik7CiAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKCFkW2ldKXt6YysrO30KICAgICAgICAgfQogICAgICAgIGlmKG5lZz4wKWJyZWFrOwogICAgICAgfQoKICAgICAgIGlmKHpjPT1kLnNpemUoKSlwcmludGYoIkhBUFBZXG4iKTsKICAgICAgIGVsc2UgaWYobmVnPjApcHJpbnRmKCJTQURcbiIpOwoKICAgIH0KIH0KCnJldHVybiAwOwp9Cg==