#include <bits/stdc++.h>
using namespace std;
const int N = 1000100;
char a[N], na[N];
int m, n, p[N], l[N], shift[N], temp[N];
void mul(int *a, int *b, int *c) {
  int i;
  for (i = 1; i <= n; ++i) temp[i] = b[c[i]];
  for (i = 1; i <= n; ++i) a[i] = temp[i];
}
int rez[N];
void rid(int *p, int nr) {
  for (int i = 1; i <= n; ++i) rez[i] = i;
  while (nr) {
    if (nr & 1) mul(rez, rez, p);
    mul(p, p, p);
    nr /= 2;
  }
  for (int i = 1; i <= n; ++i) p[i] = rez[i];
}
int main() {
  int i, j, co;
  ios_base::sync_with_stdio(false);
  cin >> (a + 1);
  n = strlen(a + 1);
  for (i = 1; i < n; ++i) shift[i] = i + 1;
  shift[n] = 1;
  cin >> m;
  for (i = 1; i <= m; ++i) {
    int k, d, nr = 0;
    cin >> k >> d;
    if (d == 1) {
      printf("%s\n", a + 1);
      continue;
    }
    for (j = 1; j <= d; ++j) {
      for (co = j; co <= k; co += d) l[++nr] = co;
    }
    for (j = k + 1; j <= n; ++j) l[j] = j;
    mul(p, l, shift);
    rid(p, n - k + 1);
    for (j = 1; j <= n; ++j) na[j] = a[p[j]];
    nr = 0;
    for (j = k; j <= n; ++j) a[++nr] = na[j];
    for (j = 1; j < k; ++j) a[++nr] = na[j];
    printf("%s\n", a + 1);
  }
  return 0;
}
