#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e6 + 10;
int ne[MAXN], l[MAXN];
int one[MAXN];
int n;
int g[MAXN];
void D(int *a, int *b) {
  for (int i = 0; i < n; i++) g[i] = b[a[i]];
  for (int i = 0; i < n; i++) a[i] = g[i];
}
void Pow(int deg) {
  int new_deg = 0;
  int cnt = 0;
  while (deg > 0) {
    cnt++;
    new_deg *= 2;
    new_deg += (deg % 2);
    deg /= 2;
  }
  while (new_deg > 0 || cnt > 0) {
    D(one, one);
    if (new_deg % 2) D(one, ne);
    new_deg /= 2;
    cnt--;
  }
}
void solve(int k, int d, string &s) {
  for (int i = 0; i < n; i++) one[i] = i;
  int cnt = 0;
  for (int i = 0; i < d; i++)
    for (int j = 0; j * d + i < k; j++) ne[j * d + i] = cnt++;
  for (int i = k; i < n; i++) ne[i] = i;
  for (int i = 0; i < n; i++) l[i] = (i + n - 1) % n;
  D(ne, l);
  Pow(n + 1 - k);
  string ans = s;
  for (int i = 0; i < n; i++) ans[(one[i] + n - k + 1) % n] = s[i];
  s = ans;
  for (int i = 0; i < s.size(); i++) cout << s[i];
  cout << '\n';
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  string s;
  getline(cin, s);
  n = s.size();
  int m;
  cin >> m;
  for (int i = 0; i < m; i++) {
    int k, d;
    cin >> k >> d;
    solve(k, d, s);
  }
  return 0;
}
