#include <bits/stdc++.h>
using namespace std;
const int NMAX = 2000005;
set<int> st;
set<int>::iterator it;
char ans[NMAX + 5], t[NMAX + 5];
int main() {
  int n, i, j, k, x, z, len, sz;
  for (i = 1; i <= NMAX; i++) {
    st.insert(i);
    ans[i] = '0';
  }
  scanf("%d", &n);
  sz = 0;
  for (i = 1; i <= n; i++) {
    scanf("%s", t);
    scanf("%d", &k);
    len = strlen(t);
    for (j = 1; j <= k; j++) {
      scanf("%d", &x);
      it = st.lower_bound(x);
      if ((*it) > x + len - 1) continue;
      for (z = (*it); z <= x + len - 1; z++) {
        ans[z] = t[z - x];
        st.erase(z);
      }
      sz = max(sz, x + len - 1);
    }
  }
  for (i = 1; i <= sz; i++)
    if (ans[i] == '0') ans[i] = 'a';
  for (i = 1; i <= sz; i++) printf("%c", ans[i]);
  printf("\n");
  return 0;
}
