#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1001010;
const int MAXP = 20;
int m[MAXP][MAXN];
int c[MAXN];
int moveForward(int v, int times) {
  for (int i = 19; i >= 0; i--) {
    if (times & (1 << i)) {
      v = m[i][v];
      if (v == -1) return v;
      times ^= (1 << i);
    }
  }
  return v;
}
int timeToEnd(int v) {
  int s = 0;
  for (int i = 19; i >= 0; i--) {
    if (m[i][v] != -1) {
      v = m[i][v];
      s ^= (1 << i);
    }
  }
  return (s + 1);
}
int main() {
  cin.tie(0);
  ios_base::sync_with_stdio(0);
  string str;
  string str2;
  cin >> str;
  int n, k, d, aux, imp, N, mv;
  n = str.size();
  cin >> N;
  for (int i = 0; i < N; i++) {
    str2.resize(n, ' ');
    cin >> k >> d;
    if (n == 1) {
      cout << str << '\n';
      continue;
    }
    aux = 0;
    for (int i = 0; i < k; i++) {
      m[0][aux] = i - 1;
      aux += d;
      if (aux >= k) aux = (aux + 1) % d;
    }
    m[0][0] = n - 1;
    for (int i = k; i < n; i++) {
      m[0][i] = i - 1;
    }
    for (int i = 1; i < 20; i++) {
      for (int j = 0; j < n; j++) {
        m[i][j] = m[i - 1][m[i - 1][j]];
      }
    }
    for (int i = 0; i < n; i++) {
      str2[(moveForward(i, n - k + 1) + n - k + 1) % n] = str[i];
    }
    cout << str2 << '\n';
    swap(str2, str);
  }
}
