#include <bits/stdc++.h>
using namespace std;
void fast() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
}
long long int gcd(long long int x, long long int y) {
  if (y == 0) return x;
  return gcd(y, x % y);
}
long long int lcm(long long int a, long long int b) {
  return (a * b) / gcd(a, b);
}
long long int logx(long long int base, long long int num) {
  int cnt = 0;
  while (num != 1) {
    num /= base;
    ++cnt;
  }
  return cnt;
}
vector<long long int> vin(long long int n) {
  vector<long long int> a(n);
  for (long long int i = 0; i < n; i++) cin >> a[i];
  return a;
}
void in(long long int *a, long long int n) {
  for (long long int i = 0; i < n; i++) cin >> a[i];
}
void out(long long int *a, long long int n) {
  for (long long int i = 0; i < n; i++) {
    cout << a[i] << " ";
  }
  cout << '\n';
}
void vout(vector<long long int> v) {
  for (long long int i = 0; i < (long long int)v.size(); i++) {
    cout << v[i] << " ";
  }
  cout << endl;
}
const long long int maxN = (long long int)(2 * 1e5 + 5);
void solve() {
  long long int n;
  cin >> n;
  long long int maxi = 1;
  long long int a[n];
  for (long long int i = 0; i < n; i++) {
    cin >> a[i];
    maxi = max(maxi, a[i]);
  }
  string s(maxi, 'a');
  string s1 = s;
  cout << s << '\n';
  {
    for (long long int i = 0; i < n; i++) {
      for (long long int j = 0; j < a[i]; j++) {
        s1[j] = s[j];
      }
      for (long long int j = a[i]; j < maxi; j++) {
        if (s[j] == 'a') {
          s1[j] = 'b';
        } else {
          s1[j] = 'a';
        }
      }
      cout << s1 << '\n';
      s = s1;
    }
  }
}
int main() {
  fast();
  long long int t = 1;
  cin >> t;
  while (t--) {
    solve();
  }
  return 0;
}
