#include <bits/stdc++.h>
using namespace std;
int n,m,cnt,cur,cv,i,j,le[100100],ri[100100],x[100100],y[100100],q[100100],k[100100],a[100100],c[100100],r[100100];
pair<int,int> b[100100];
char s[100100];
bool cmp(int i, int j) { return q[i]<q[j]; }
void modify(int i, int v) {
  a[i]+=v;
  for (; i<=n; i=(i<<1)-(i&(i-1))) c[i]+=v;
}
int fs(int i) {
  int r=0;
  for (; i>0; i&=i-1) r+=c[i];
  return r;
}
int main() {
  scanf("%d",&n);
  scanf("%s",s);
  for (i=1; i<=n; i++) if (s[i-1]=='1') le[i]=i; else le[i]=le[i-1];
  ri[n+1]=n+1;
  for (i=n; i>=0; i--) if (s[i-1]=='1') {
    b[cnt++]=make_pair(ri[i+1]-i,i);
    ri[i]=i;
  } else ri[i]=ri[i+1];
  sort(b,b+cnt);
  reverse(b,b+cnt);
  scanf("%d",&m);
  for (i=0; i<m; i++) {
    scanf("%d%d%d",&x[i],&y[i],&q[i]);
    k[i]=i;
  }
  sort(k,k+m,cmp);
  for (i=0; i<m; i=j) {
    cv=q[k[i]];
    for (j=0; j<cnt; j++) if (b[j].first>cv) {
      modify(b[j].second,(b[j].first-1)/cv-a[b[j].second]);
    } else if (a[b[j].second]>0) {
      modify(b[j].second,-1);
    } else break;
    for (j=i; j<m && cv==q[k[j]]; j++) {
      cur=k[j];
      if (ri[x[cur]]>=y[cur]) {
        r[cur]=(y[cur]-x[cur]-1)/cv;
      } else {
        int xx=ri[x[cur]];
        int yy=le[y[cur]];
        r[cur]=(xx-x[cur]-1)/cv+(y[cur]-yy-1)/cv;
        if (xx<yy) r[cur]+=fs(yy-1)-fs(xx-1);
      }
    }
  }
  for (i=0; i<m; i++) printf("%d\n",r[i]);
  return 0;
}