link
#include<iostream>
#include<cstdio>
#define int long long
using namespace std;
const int mod=1e9+7;
int n,m,q,a[400010],last[400010];
int d1[200010][70],d2[200010][70];
signed main()
{
scanf("%lld%lld%lld",&n,&m,&q);
for(int i=1;i<=n;i++)
{
char c;
cin>>c;
a[i]=a[i+n]=c-'0';
}
for(int i=1;i<=2*n;i++)
{
if(a[i]==1)last[i]=i;
else last[i]=last[i-1];
}
for(int i=1;i<=n;i++)
if(m<n)
{
if(last[i+m]<=i)d1[i][0]=d2[i][0]=1;
else d1[i][0]=d2[i][0]=last[i+m]-i;
}
else
{
if(!last[n])d1[i][0]=1%n,d2[i][0]=1;
else
{
int r=i+(m-1)%n+1;
d1[i][0]=(m-r+last[r])%n,d2[i][0]=(m-r+last[r])%mod;
}
}
for(int j=1;j<=61;j++)
for(int i=1;i<=n;i++)
{
int nxt=(i+d1[i][j-1]-1)%n+1;
d1[i][j]=(d1[i][j-1]+d1[nxt][j-1])%n;
d2[i][j]=(d2[i][j-1]+d2[nxt][j-1])%mod;
}
while(q--)
{
int ss,k;
scanf("%lld%lld",&ss,&k);
int now=(ss-1)%n+1,ans=ss%mod;
for(int i=61;i>=0;i--)
if(k>=(1ll<<i))
{
k-=(1ll<<i);
ans=(ans+d2[now][i])%mod;
now=(now+d1[now][i]-1)%n+1;
}
printf("%lld\n",ans);
}
return 0;
}