#include <bits/stdc++.h>
using namespace std;
const long long inf = 2147383647;
const double pi = 2 * acos(0.0);
const double eps = 1e-9;
struct debugger {
  template <typename T>
  debugger &operator,(const T &v) {
    cerr << v << " ";
    return *this;
  }
} dbg;
inline long long gcd(long long a, long long b) {
  a = ((a) < 0 ? -(a) : (a));
  b = ((b) < 0 ? -(b) : (b));
  while (b) {
    a = a % b;
    swap(a, b);
  }
  return a;
}
int ext_gcd(int a, int b, int &x, int &y) {
  if (a == 0) {
    x = 0;
    y = 1;
    return b;
  }
  int x1, y1;
  int d = ext_gcd(b % a, a, x1, y1);
  x = y1 - (b / a) * x1;
  y = x1;
  return d;
}
inline long long modInv(int a, int m) {
  int x, y;
  ext_gcd(a, m, x, y);
  if (x < 0) x += m;
  return x;
}
inline long long power(long long a, long long p) {
  long long res = 1, x = a;
  while (p) {
    if (p & 1) res = (res * x);
    x = (x * x);
    p >>= 1;
  }
  return res;
}
inline long long bigmod(long long a, long long p, long long m) {
  long long res = 1, x = a % m;
  while (p) {
    if (p & 1) res = (res * x) % m;
    x = (x * x) % m;
    p >>= 1;
  }
  return res;
}
char buf[1000100];
int n;
struct PERM {
  vector<int> p;
  void init() { p.resize(n); }
  void identity() {
    init();
    for (int i = (0); i <= (n - 1); ++i) p[i] = i;
  }
  void print() {
    for (int i = (0); i <= (n - 1); ++i) {
      printf("%d ", p[i]);
    }
    puts("");
  }
  void build(int k, int d) {
    int ind = 0;
    for (int i = (0); i <= (d - 1); ++i) {
      int cur = i;
      while (cur < k) {
        p[ind++] = cur;
        cur += d;
      }
    }
    for (int i = (k); i <= (n - 1); ++i) {
      p[ind++] = i;
    }
  }
  void rotate() {
    int x = p[0];
    for (int i = (0); i <= (n - 2); ++i) {
      p[i] = p[i + 1];
    }
    p[n - 1] = x;
  }
  PERM operator*(const PERM &b) {
    PERM res;
    res.init();
    for (int i = (0); i <= (n - 1); ++i) {
      int x = b.p[i];
      res.p[i] = p[x];
    }
    return res;
  }
  PERM operator^(int pwr) {
    PERM res, x;
    res.identity();
    x = *this;
    while (pwr) {
      if (pwr & 1) res = res * x;
      x = x * x;
      pwr >>= 1;
    }
    return res;
  }
} perm;
char temp[1000010];
int main() {
  scanf("%s", buf);
  n = strlen(buf);
  int m;
  scanf("%d", &m);
  perm.init();
  while (m--) {
    int k, d;
    scanf("%d %d", &k, &d);
    perm.build(k, d);
    perm.rotate();
    int x = n - k + 1;
    perm = perm ^ x;
    int ind = (k - 1 + n) % n;
    for (int i = (0); i <= (n - 1); ++i) {
      x = perm.p[ind];
      temp[i] = buf[x];
      ind++;
      if (ind == n) ind = 0;
    }
    printf("%s\n", temp);
    for (int i = (0); i <= (n - 1); ++i) buf[i] = temp[i];
  }
  return 0;
}
