#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 1000000;
const int MAX_L = 100;
typedef int prm[MAX_N];
char ss[2][MAX_N + 4];
prm pc, pp, p0, p1, p2, p3;
int dps[MAX_L + 1][MAX_L + 1][MAX_L + 4];
void prmcopy(int n, const int a[], int b[]) { copy(a, a + n, b); }
void prmmul(int n, const int a[], const int b[], int c[]) {
  for (int i = 0; i < n; i++) c[i] = a[b[i]];
}
void prmpow(int n, const int a[], int b, int c[]) {
  prm s, t;
  prmcopy(n, a, s);
  for (int i = 0; i < n; i++) c[i] = i;
  while (b > 0) {
    if (b & 1) {
      prmmul(n, c, s, t);
      prmcopy(n, t, c);
    }
    prmmul(n, s, s, t);
    prmcopy(n, t, s);
    b >>= 1;
  }
}
void prmprint(int n, const int a[]) {
  for (int i = 0; i < n; i++) printf(" %d", a[i]);
  putchar('\n');
}
int main() {
  int m;
  scanf("%s%d", ss[0], &m);
  int n = strlen(ss[0]);
  if (n <= 2) {
    while (m--) puts(ss[0]);
    return 0;
  }
  for (int i = 0; i < n; i++) pc[i] = (i + 1) % n;
  int cur = 0, nxt = 1;
  if (n <= MAX_L) {
    for (int k = 1; k <= n; k++)
      for (int d = 1; d <= k; d++) {
        for (int i = 0, ir = 0; i < k && ir < d; ir++)
          for (int iq = 0; i < k && iq + ir < k; iq += d) pp[i++] = iq + ir;
        for (int i = k; i < n; i++) pp[i] = i;
        prmmul(n, pp, pc, p0);
        prmpow(n, p0, n - k + 1, p1);
        prmpow(n, pc, k - 1, p0);
        prmmul(n, p1, p0, dps[k][d]);
      }
  }
  while (m--) {
    int k, d;
    scanf("%d%d", &k, &d);
    if (n <= MAX_L) {
      for (int i = 0; i < n; i++) ss[nxt][i] = ss[cur][dps[k][d][i]];
    } else {
      for (int i = 0, ir = 0; i < k && ir < d; ir++)
        for (int iq = 0; i < k && iq + ir < k; iq += d) pp[i++] = iq + ir;
      for (int i = k; i < n; i++) pp[i] = i;
      prmmul(n, pp, pc, p0);
      prmpow(n, p0, n - k + 1, p1);
      prmpow(n, pc, k - 1, p0);
      prmmul(n, p1, p0, p2);
      for (int i = 0; i < n; i++) ss[nxt][i] = ss[cur][p2[i]];
    }
    puts(ss[nxt]);
    swap(cur, nxt);
  }
  return 0;
}
