#include <bits/stdc++.h>
using namespace std;
const int N = 1 << 20;
int n, fa[N][21];
char g[N], st[N];
inline void build(int n, int d) {
  int cnt = 0;
  for (int i = 0; i < d; ++i)
    for (int j = i; j < n; j += d) fa[j][0] = (cnt++) - 1;
  for (int j = 0; j < 20; ++j)
    for (int i = 0; i < n; ++i) fa[i][j + 1] = ~fa[i][j] ? fa[fa[i][j]][j] : -1;
}
inline int getans(int x, int& t) {
  int rt = x, cnt = t;
  for (int i = 20; ~i; --i)
    if (~rt && cnt >= (1 << i)) cnt -= 1 << i, rt = fa[rt][i];
  if (~rt) return rt;
  t = 0;
  rt = x;
  for (int i = 20; ~i; --i)
    if (~fa[rt][i]) rt = fa[rt][i], t += 1 << i;
  ++t;
  return fa[rt][0];
}
inline void solve(void) {
  int l, r, t, k, d, ans;
  scanf("%d%d", &k, &d);
  build(k, d);
  for (int i = 0; i < n; ++i) {
    l = max(i - k + 1, 0);
    r = n - k;
    t = r - l + 1;
    ans = getans(i - l, t);
    g[l + t + ans] = st[i];
  }
  puts(g);
  for (int i = 0; i < n; ++i) st[i] = g[i];
}
int main() {
  int m;
  scanf("%s", st);
  n = strlen(st);
  scanf("%d", &m);
  for (int i = 1; i <= m; ++i) solve();
  return 0;
}
