func_code_string: #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;   }   