#include #include #include using namespace std; int main() { const long long mal = (long long)1e18 + 1; int n, q; cin >> n >> q; string s; cin >> s; const int mat = 59; vector len(mat); for (int i = 0; i < mat; ++i) len[i] = (5LL << i) - 4; vector sum(n + 1); for (int i = 0; i < n; ++i) sum[i + 1] = sum[i] + (s[i] == 'a' || s[i] == 'w'); const string w = "warong", a = "answer"; auto dfs = [&](auto dfs, char c, long long v, int t) -> char { if (v == 0 || t < 0) return c; if (c == 'w') { for (int i = 0; i < 6; ++i) { if (w[i] == 'w') { if (v < len[t]) { return dfs(dfs, 'w', v, t - 1); } else v -= len[t]; } else if (w[i] == 'a') { if (v < len[t]) { return dfs(dfs, 'a', v, t - 1); } else v -= len[t]; } else { if (v <= 0) return w[i]; --v; } } } else if (c == 'a') { for (int i = 0; i < 6; ++i) { if (a[i] == 'w') { if (v < len[t]) { return dfs(dfs, 'w', v, t - 1); } else v -= len[t]; } else if (a[i] == 'a') { if (v < len[t]) { return dfs(dfs, 'a', v, t - 1); } else v -= len[t]; } else { if (v <= 0) return a[i]; --v; } } } return c; }; while (q--) { long long t, x; cin >> t >> x; t = min(t, mat - 1LL); int l = 0, r = n; while (r - l > 1) { int mid = (l + r) / 2; long long tmp; if (sum[mid] > mal / len[t]) tmp = x + 1; else tmp = sum[mid] * len[t] + (mid - sum[mid]); (tmp < x ? l : r) = mid; } // cout << t << ',' << x << endl; // cout << l << endl; x -= (l - sum[l]) + sum[l] * len[t]; // cout << l << ',' << x << endl; // cout << "ans: "; --x; if (x == 0) cout << s[l]; else if (s[l] != 'a' && s[l] != 'w') cout << s[l]; else cout << dfs(dfs, s[l], x, t); // cout << endl << endl; } cout << endl; }