#include <bits/stdc++.h>
int dp[262145];
int ans = INT_MAX;
using namespace std;
void fileio() {}
int ss(string s, string* o) {
  if (s.length() == 0) {
    o[0] = "";
    return 1;
  }
  int n = ss(s.substr(1), o);
  for (int i = 0; i < n; ++i) {
    o[n + i] = s[0] + o[i];
  }
  return 2 * n;
}
int main() {
  fileio();
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long T, x = 0;
  cin >> T;
  while (T--) {
    long long n;
    cin >> n;
    long long a[n];
    for (long long i = 0; i < n; ++i) {
      cin >> a[i];
    }
    vector<string> v;
    string s, s1;
    long long t, l, in;
    char c = 'a', ch = 'a';
    t = a[0];
    while (t--) {
      s.push_back(c);
      s1.push_back(c);
    }
    if (a[0] == 0) {
      s.push_back(c + 1);
      s1.push_back(c);
    }
    v.push_back(s);
    v.push_back(s1);
    s1.clear();
    for (long long i = 1; i < n; ++i) {
      if (!a[i]) {
        char x = v[v.size() - 1][0];
        if (x == 'z')
          s1.push_back('a');
        else
          s1.push_back(x + 1);
        v.push_back(s1);
        s1.clear();
        continue;
      }
      l = v[v.size() - 1].length();
      t = a[i];
      in = 0;
      if (l > a[i]) {
        if (ch == 'z')
          ch = 'a';
        else
          ch++;
      }
      while (in < a[i]) {
        if (in >= l) v[v.size() - 1].push_back(ch);
        s1.push_back(v[v.size() - 1][in]);
        in++;
      }
      v.push_back(s1);
      s1.clear();
    }
    for (auto x : v) cout << x << "\n";
  }
  return 0;
}
