#include <bits/stdc++.h>
using namespace std;
map<int, int> mp;
string s[1000007];
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n, k, x;
  cin >> n;
  int max_len = 0;
  string ans;
  for (int i = 0; i < n; i++) {
    cin >> s[i];
    cin >> k;
    int len = (int)s[i].length();
    for (int j = 0; j < k; j++) {
      cin >> x;
      x--;
      if (mp.find(x) == mp.end())
        mp[x] = i;
      else {
        string& tmp = s[mp[x]];
        if (int(tmp.length()) < len) mp[x] = i;
      }
      max_len = max(max_len, x + len);
    }
  }
  ans.resize(max_len);
  int r = 0;
  for (auto& k : mp) {
    string& tmp = s[mp[k.first]];
    int len = tmp.length();
    if (k.first >= r) {
      for (int i = 0; i < len; i++) ans[k.first + i] = tmp[i];
      r = k.first + len - 1;
    } else {
      if ((k.first + len - 1) > r) {
        int id = r - k.first;
        for (int i = id; i < len; i++) ans[k.first + i] = tmp[i];
        r = k.first + len - 1;
      }
    }
  }
  for (int i = 0; i < max_len; i++) {
    if (!(ans[i] >= 'a' && ans[i] <= 'z')) ans[i] = 'a';
  }
  cout << ans << "\n";
  return 0;
}
