#include <bits/stdc++.h>
using namespace std;
int INT_MAX_VAL = (int)1e20;
int INT_MIN_VAL = (int)-1e20;
long long LONG_MAX_VAL = (long long)1e20;
long long LONG_MIN_VAL = (long long)-1e20;
vector<long long> perm(long long k, long long d, long long n) {
  int z = 0;
  vector<long long> a(n);
  for (long long j = 0; j < d; j++) {
    for (long long i = j; i < k; i += d) {
      a[z++] = i;
    }
  }
  for (long long i = k; i < n; ++i) {
    a[i] = i;
  }
  return a;
}
vector<long long> cycle(long long n) {
  vector<long long> a(n);
  for (long long(i) = 0LL; (i) < (n); (i)++) {
    a[i] = ((i + n + 1) % n);
  }
  return a;
}
vector<long long> apply(const vector<long long>& a,
                        const vector<long long>& b) {
  vector<long long> res(a.size());
  for (long long(i) = 0LL; (i) < (a.size()); (i)++) {
    res[i] = a[b[i]];
  }
  return res;
}
vector<long long> id;
vector<long long> pow(const vector<long long>& a, long long n) {
  if (n == 0) {
    return id;
  }
  if (n == 1) {
    return a;
  }
  if (n % 2 == 0) {
    vector<long long> q = pow(a, n / 2);
    return apply(q, q);
  } else {
    vector<long long> q = pow(a, n - 1);
    return apply(q, a);
  }
}
char str[1000005];
int main() {
  scanf("%s", str);
  string s(str);
  long long n = s.size();
  for (long long(i) = 0LL; (i) < (n); (i)++) {
    id.push_back(i);
  }
  vector<long long> cp = cycle(n);
  int m;
  scanf("%d", &m);
  for (long long(i) = 0LL; (i) < (m); (i)++) {
    int k, d;
    scanf("%d%d", &k, &d);
    vector<long long> p = perm(k, d, n);
    p = apply(p, cp);
    vector<long long> res = pow(p, n - k + 1);
    string f = s;
    for (long long(j) = 0LL; (j) < (n); (j)++) {
      f[(j + n - k + 1 + n) % n] = s[res[j]];
    }
    cout << f << '\n';
    s = f;
  }
  return 0;
}
