#include <bits/stdc++.h>
#define Nmax 100005
#define INF 1000000000
#define pii pair <int,int>
#define mp make_pair
#define fi first
#define se second

using namespace std;

struct qry
{
    int st,dr,D,ind;
    bool operator < (const qry &A) const
    {
        return D<A.D;
    }
} Q[Nmax];
int ans[Nmax],n,m,v[Nmax],len,s[Nmax];
char sir[Nmax];
pii segm[Nmax];

inline void Make_sums(int D)
{
    for(int i=1;i<=n;++i)
        s[i]=s[i-1]+(v[i]/D);
}

inline void Solve()
{
    int i,j,Sqrt=sqrt(1.0*n);
    sort(Q+1,Q+len+1);
    for(i=1;i<=len;++i)
        if(Q[i].D<=Sqrt)
        {
            if(i==1 || Q[i].D>Q[i-1].D)
                Make_sums(Q[i].D);
            ans[Q[i].ind]+=s[Q[i].dr]-s[Q[i].st-1];
        }
        else
        {
            for(j=Q[i].st;j<=Q[i].dr;++j)
                ans[Q[i].ind]+=(v[j]/Q[i].D);
        }
}

int main()
{
    int i,j,x,y,z,p1,p2;
    qry w;
    #ifndef ONLINE_JUDGE
        freopen ("date.in", "r", stdin);
        freopen ("date.out", "w", stdout);
    #endif
    cin>>len>>(sir+1);
    for(i=1;i<=len;)
    {
        for(;i<=len && sir[i]=='1';++i);
        if(i>len) continue;
        for(j=i;j<=len && sir[j]=='0';++j);
        --j;
        segm[++n]=mp(i,j);
        v[n]=j-i+1;
        i=j+1;
    }
    //cout<<n<<"\n";
    //for(i=1;i<=n;++i) cout<<segm[i].fi<<" "<<segm[i].se<<" "<<v[i]<<"\n";
    cin>>m; len=0;
    for(i=1;i<=m;++i)
    {
        cin>>x>>y>>z;
        p1=upper_bound(segm+1,segm+n+1,mp(x,INF))-segm;
        //cout<<p1<<"--\n";
        if(p1>n) continue;
        if(p1) ans[i] += max(segm[p1-1].se-x,0)/z;
        p2=upper_bound(segm+1,segm+n+1,mp(y,INF))-segm-1;
        //cout<<p2<<"--\n";
        if(p2<p1) continue;
        //cout<<ans[i]<<"++\n";
        if(segm[p2].se>=y)
        {
            ans[i] += max(y-segm[p2].fi,0)/z;
            if(p2-1>=p1)
            {
                w.ind=i;
                w.st=p1; w.dr=p2-1; w.D=z;
                //cout<<w.st<<" "<<w.dr<<" "<<ans[i]<<"\n";
                Q[++len]=w;
            }
        }
        else
        {
            if(p2>=p1)
            {
                w.ind=i;
                w.st=p1; w.dr=p2; w.D=z;
                Q[++len]=w;
            }
        }
    }
    Solve();
    for(i=1;i<=m;++i) cout<<ans[i]<<"\n";
    return 0;
}