#include <bits/stdc++.h>
using namespace std;
const long long INF = 1000000007;
const long long MAXN = 1000001;
bool prime[1000001];
void SieveOfEratosthenes() {
  memset(prime, true, sizeof(prime));
  for (int p = 2; p * p <= 1000000; p++) {
    if (prime[p] == true) {
      for (int i = p * p; i <= 1000000; i += p) prime[i] = false;
    }
  }
}
long long bs(vector<long long> a, long long x, long long n) {
  int l = 0;
  int h = n - 1;
  int m;
  while (l <= h) {
    m = (l + h) / 2;
    if (a[m] >= x)
      h = m - 1;
    else if (a[m] < x)
      l = m + 1;
  }
  if (a[m] >= x) m--;
  return m;
}
long long power(long long x, long long y) {
  long long res = 1;
  if (x == 0) return 0;
  while (y > 0) {
    if (y & 1) res = (res * x);
    y = y >> 1;
    x = (x * x);
  }
  return res;
}
long long mex(vector<long long> a, int n) {
  sort(a.begin(), a.end());
  int j = a[0];
  if (j != 0)
    return 0;
  else {
    for (int i = 1; i < n; i++) {
      if (a[i] != a[i - 1]) {
        if (a[i] != a[i - 1] + 1) {
          return j + 1;
        } else
          j++;
      }
    }
    return j + 1;
  }
}
int spf[MAXN];
void sieve() {
  spf[1] = 1;
  for (int i = 2; i < MAXN; i++) spf[i] = i;
  for (int i = 4; i < MAXN; i += 2) spf[i] = 2;
  for (int i = 3; i * i < MAXN; i++) {
    if (spf[i] == i) {
      for (int j = i * i; j < MAXN; j += i)
        if (spf[j] == j) spf[j] = i;
    }
  }
}
long long gcd(long long a, long long b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
long long c(long long m, long long n) {
  long long ans = 1;
  for (int i = 1; i <= n; i++) {
    ans = (ans * (m - i + 1)) / i;
  }
  return ans;
}
long long modInverse(long long a, long long m) {
  long long m0 = m;
  long long y = 0, x = 1;
  if (m == 1) return 0;
  while (a > 1) {
    long long q = a / m;
    long long t = m;
    m = a % m, a = t;
    t = y;
    y = x - q * y;
    x = t;
  }
  if (x < 0) x += m0;
  return x;
}
long long pc(long long n) {
  for (int i = 2; i * i <= n; i++) {
    if (n % i == 0) return 0;
  }
  return 1;
}
long long lexo(string a, string b) {
  long long n = a.length();
  for (int i = 0; i < n; i++) {
    if (a[i] < b[i])
      return 1;
    else if (b[i] < a[i])
      return 0;
  }
  return 0;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long test;
  cin >> test;
  while (test--) {
    long long n;
    cin >> n;
    vector<long long> a(n);
    for (int i = 0; i < n; i++) {
      cin >> a[i];
    }
    sort(a.begin(), a.end());
    long long ans = 0;
    long long p = -1;
    if (n >= 2) {
      while (a[n - 1] != 0) {
        if (a[n - 1] != p - 1) {
          p = a[n - 1];
          a[n - 1]--;
          ans++;
        } else {
          if (a[n - 2] == 0) {
            break;
          } else {
            p = a[n - 2];
            a[n - 2]--;
            ans++;
          }
        }
        sort(a.begin(), a.end());
      }
      if (ans % 2)
        cout << "T"
             << "\n";
      else
        cout << "HL"
             << "\n";
    } else {
      if (a[0] > 0)
        cout << "T"
             << "\n";
      else
        cout << "HL"
             << "\n";
    }
  }
}
