#include <bits/stdc++.h>
using namespace std;
enum { N = 400007, M = 8000000 };
char A[N], B[N];
int n, m, q, o, t, c, T[N][26], L[N], P[N], ls[M], rs[M], S[M], rt[N], hd[N],
    nt[N];
void upd(int &u, int x, int L = 1, int R = n) {
  u = ++c, S[u] = 1;
  if (L == R) return;
  int m = (L + R) >> 1;
  if (x <= m)
    upd(ls[u], x, L, m);
  else
    upd(rs[u], x, m + 1, R);
}
int qry(int u, int l, int r, int L = 1, int R = n) {
  if (!u || (l == L && r == R)) return S[u];
  int m = (L + R) >> 1;
  if (r <= m) return qry(ls[u], l, r, L, m);
  if (l > m) return qry(rs[u], l, r, m + 1, R);
  return qry(ls[u], l, m, L, m) || qry(rs[u], m + 1, r, m + 1, R);
}
int mrg(int x, int y) {
  if (!x || !y) return x | y;
  int u = ++c;
  S[u] = S[x] + S[y];
  ls[u] = mrg(ls[x], ls[y]);
  rs[u] = mrg(rs[x], rs[y]);
  return u;
}
void add(int c, int i) {
  int u = ++t;
  L[u] = L[o] + 1, upd(rt[u], i);
  for (; o && !T[o][c]; o = P[o]) T[o][c] = u;
  if (!o)
    P[u] = 1;
  else {
    int p = T[o][c];
    if (L[o] + 1 == L[p])
      P[u] = p;
    else {
      int q = ++t;
      P[q] = P[p], L[q] = L[o] + 1;
      memcpy(T[q], T[p], sizeof(T[q]));
      P[u] = P[p] = q;
      for (; o && T[o][c] == p; o = P[o]) T[o][c] = q;
    }
  }
  o = u;
}
void fly(int u) {
  for (int v = hd[u]; v; v = nt[v]) {
    fly(v);
    rt[u] = mrg(rt[u], rt[v]);
  }
}
int main() {
  scanf("%s%d", A + 1, &q), n = strlen(A + 1);
  o = t = 1;
  for (int i = 1; i <= n; ++i) add(A[i] - 'a', i);
  for (int i = 2; i <= t; ++i) nt[i] = hd[P[i]], hd[P[i]] = i;
  fly(1);
  while (q--) {
    int l, r;
    scanf("%d%d%s", &l, &r, B + 1), m = strlen(B + 1);
    B[m + 1] = 'a' - 1;
    int u = 1, a = -1;
    char b;
    for (int i = 1; i <= m + 1; ++i) {
      if (l + i - 1 > r) break;
      for (int j = B[i] - 'a' + 1; j <= 25; ++j) {
        int v = T[u][j];
        if (v && qry(rt[v], l + i - 1, r)) {
          a = i, b = j;
          break;
        }
      }
      if (i > m) break;
      u = T[u][B[i] - 'a'];
      if (!u) break;
    }
    if (a < 0)
      puts("-1");
    else {
      for (int i = 1; i <= a - 1; ++i) putchar(B[i]);
      putchar(b + 'a'), putchar('\n');
    }
  }
  return 0;
}
