#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 5;
struct per {
  vector<int> v;
  per operator*(const per& rhs) const {
    per ret;
    ret.v.resize(v.size());
    for (int i = 0; i < v.size(); i++) {
      ret.v[i] = v[rhs.v[i]];
    }
    return ret;
  }
};
per pow(per& a, int p) {
  if (p == 1) return a;
  per temp = pow(a, p / 2);
  temp = temp * temp;
  if (p & 1) temp = temp * a;
  return temp;
}
int main() {
  string s;
  cin >> s;
  int n = s.size(), q;
  scanf("%d", &q);
  while (q--) {
    int k, d;
    scanf("%d%d", &k, &d);
    per b, rot, ans;
    int st = 0, mul = 0;
    for (int i = 0; i < n; i++) {
      rot.v.push_back((i + 1 + n) % n);
      if (i < k) {
        b.v.push_back(mul);
        mul += d;
        if (mul >= k) st++, mul = st;
      } else
        b.v.push_back(i);
    }
    per m = b * rot;
    ans = pow(m, n - k + 1);
    string temp = s;
    for (int i = 0; i < n; i++) {
      temp[i] = s[ans.v[(i - (n - k + 1) + n) % n]];
    }
    printf("%s\n", temp.c_str());
    s = temp;
  }
  return 0;
}
