#include<iostream>
using namespace std;
int b[41],c[11],s,n;
bool flag;
//这个题目很巧妙,问题是能否刚好切完,现在反向思考,能否填满
//这个搜索想的好,从上到下,从左到右,也就是每次找最可能填的地方,有点贪心的意思
//
void dfs(int a)
{
int pos,i,j,lit=41;
bool f;
if(a==n)//搜索完毕
{
flag=true;
return;
}
for(i=1,lit=41;i<=s;i++)//找到最可能填的位置
{
if(lit>b[i])
{
lit=b[i];
pos=i;
}
}
for(i=10;i>=1;i--)
{
if(c[i]>0&&lit+i-1<=s&&pos+i-1<=s)//能不能放得下
{
for(j=pos,f=true;j<=pos+i-1;j++)//宽度够不够
{
if(b[j]>lit)
{
f=false;
break;
}
}
if(f)
{
for(j=pos;j<=pos+i-1;j++)//够了
b[j]+=i;
c[i]--;
dfs(a+1);
c[i]++;
for(j=pos;j<=pos+i-1;j++)//不够
b[j]-=i;
}
}
}
}
int main()
{
int t,i,sum,a;
scanf("%d",&t);
while(t--)
{
sum=0;
scanf("%d%d",&s,&n);
memset(c,0,sizeof(c));
for(i=1;i<=40;i++)
b[i]=1;
for(i=1;i<=n;i++)
{
scanf("%d",&a);
sum+=a*a;
c[a]++;
}
if(sum!=s*s)
flag=false;
else
{
flag=false;
dfs(0);
}
if(flag)
printf("KHOOOOB!/n");
else
printf("HUTUTU!/n");
}
return 0;
}