#include <bits/stdc++.h>
using namespace std;
string st;
long tests, n, k, d, ttl;
long p1[1 << 20];
long temp;
char res[1 << 20], tres[1 << 20];
vector<long> one(long sz) {
  vector<long> res;
  for (int i = 0; i < sz; i++) res.push_back(i);
  return res;
}
vector<long> mult(vector<long> &a, vector<long> b) {
  vector<long> res;
  res.resize(a.size());
  for (int i = 0; i < a.size(); i++) res[i] = b[a[i]];
  return res;
}
void show(vector<long> v) {
  for (int i = 0; i < v.size(); i++) cout << v[i] << " ";
  cout << endl;
}
vector<long> pw(vector<long> &a, long b) {
  vector<long> vv, temp;
  vv = one(a.size());
  temp = one(a.size());
  while (b) {
    if (b % 2)
      for (int i = 0; i < vv.size(); i++) vv[i] = a[vv[i]];
    b /= 2;
    for (int i = 0; i < vv.size(); i++) temp[i] = a[a[i]];
    for (int i = 0; i < vv.size(); i++) a[i] = temp[i];
  }
  return vv;
}
vector<long> perm;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> st;
  cin >> tests;
  n = st.size();
  perm.resize(n);
  for (; tests; --tests) {
    cin >> k >> d;
    for (int i = 0; i < n; i++) p1[i] = i;
    ttl = 0;
    for (int i = 0; i < d; i++) {
      for (int j = i; j < k; j += d) {
        p1[ttl] = j;
        ++ttl;
      }
    }
    temp = p1[0];
    for (int j = 0; j + 1 < n; j++) {
      p1[j] = p1[j + 1];
    }
    p1[n - 1] = temp;
    ttl = n - k + 1;
    for (int i = 0; i < n; i++) perm[i] = p1[i];
    perm = pw(perm, ttl);
    for (int i = 0; i < n; i++) tres[i] = st[perm[i]];
    ttl = 0;
    for (int i = k - 1; i + 1 < n; i++) {
      res[ttl] = tres[i];
      ttl++;
    }
    res[ttl] = tres[n - 1];
    ++ttl;
    for (int i = 0; i < k - 1; i++) {
      res[ttl] = tres[i];
      ttl++;
    }
    for (int i = 0; i < n; i++) cout << res[i];
    for (int i = 0; i < n; i++) st[i] = res[i];
    cout << "\n";
  }
  cin.get();
  cin.get();
  return 0;
}
