#include <bits/stdc++.h>
using namespace std;
void solve() {
  int n;
  cin >> n;
  int N = 2e6 + 1;
  set<pair<int, int> > o;
  string s[n], ans(N, ' ');
  int l = 0, k[n];
  for (int i = 0; i < n; i++) {
    cin >> s[i];
    int M = s[i].size();
    cin >> k[i];
    for (int j = 0; j < k[i]; j++) {
      int p;
      cin >> p;
      p--;
      l = max(l, p + M);
      o.insert({p, i});
    }
  }
  for (int i = 0; i < l;) {
    while ((*o.begin()).first + s[(*o.begin()).second].size() - 1 < i)
      o.erase(*o.begin());
    if ((*o.begin()).first > i) {
      ans[i] = 'a';
      i++;
    } else {
      int kk = (*o.begin()).second;
      int p = i;
      for (int j = i - (*o.begin()).first; j < s[kk].size(); j++, p++)
        ans[p] = s[kk][j];
      i = p;
    }
  }
  for (int i = 0; i < l; i++) cout << ans[i];
}
int main() {
  int q = 1;
  for (int i = 1; i <= q; i++) {
    solve();
  }
  return 0;
}
