WA on #14 #15,调了一晚上了(
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll N = 2e5 + 5, mod = 1e9 + 7;
int n, q;
ll m, s, k, st[N][65], ts[N][65];
char str[N * 2];
int main() {
//freopen("kingdom5.in", "r", stdin);
//freopen("my.out", "w", stdout);
ios :: sync_with_stdio(0);
cin.tie(0);
cin >> n >> m >> q >> str;
for(int i = 0; i < n; i++) str[i + n] = str[i];
int mn = -2e9;
for(int i = 1; i < m % n; i++)
if(str[i] == '1') mn = i;
for(int i = 0; i < n; i++) {
if(str[i + m % n] == '1') mn = i + m % n;
/*
st[i][0] = (m / n * n + (mn > i ? mn - i : 1)) % mod;
ts[i][0] = (m / n * n + (mn > i ? mn - i : 1)) % n;
*/
if(m / n * n + mn > i) st[i][0] = (m / n * n + mn - i) % mod;
else st[i][0] = 1;
if(m / n * n + mn > i) ts[i][0] = (mn - i) % n;
else ts[i][0] = 1;
//cout << i << ' ' << i + st[i][0] << " " << mn << endl;
}
for(int j = 1; j <= 63; j++)
for(int i = 0; i < n; i++) {
ll m = (i + ts[i][j - 1]) % n;
st[i][j] = (st[i][j - 1] + st[m][j - 1]) % mod;
ts[i][j] = (ts[i][j - 1] + ts[m][j - 1]) % n;
}
while(q--) {
cin >> s >> k;
s--;
ll now = s % n;
for(ll i = 63; i >= 0; i--)
if(k >> i & 1) {
s = (s + st[now][i]) % mod;
now = (now + ts[now][i]) % n;
}
cout << (s + 1) % mod << endl;
}
return 0;
}