#include <bits/stdc++.h>
using namespace std;
char ch, B[1 << 20], *S = B, *T = B;
int aa, bb;
int rd() {
  while (ch = (S == T && (T = (S = B) + fread(B, 1, 1 << 20, stdin), S == T)
                   ? 0
                   : *S++),
         !(ch >= '0' && ch <= '9') && ch != '-')
    ;
  ch == '-' ? aa = bb = 0 : (aa = ch - '0', bb = 1);
  while (ch = (S == T && (T = (S = B) + fread(B, 1, 1 << 20, stdin), S == T)
                   ? 0
                   : *S++),
         (ch >= '0' && ch <= '9'))
    aa = aa * 10 + ch - '0';
  return bb ? aa : -aa;
}
const int MAXN = 2e5 + 10;
const int BASE = 233;
char s[MAXN];
int n, a[MAXN], tot, flag[MAXN], cnt[MAXN];
unsigned long long power[MAXN], Hash[MAXN];
unsigned long long get(int l, int r) {
  int len = r - l + 1;
  return 1ll * Hash[r] - Hash[l - 1] * power[len];
}
unsigned long long check(int l, int r) {
  int L = lower_bound(a + 1, a + tot + 1, l) - a;
  int R = upper_bound(a + 1, a + tot + 1, r) - a - 1;
  if (L <= R) {
    unsigned long long x = (a[L] - l) & 1, v = x * power[R - L];
    if (L < R) v += get(L + 1, R);
    return v;
  }
  return 0;
}
inline void work() {
  power[0] = 1;
  for (register int i = 1; i < MAXN; ++i) power[i] = power[i - 1] * BASE;
  scanf("%d%s", &n, s + 1);
  int digit = 0;
  for (register int i = 1; i <= n; ++i) {
    cnt[i] = cnt[i - 1];
    if (s[i] == '1')
      digit++;
    else {
      flag[++tot] = digit & 1;
      digit = 0;
      a[tot] = i;
      ++cnt[i];
    }
  }
  for (register int i = 1; i <= tot; ++i)
    Hash[i] = Hash[i - 1] * BASE + flag[i];
  int q;
  scanf("%d", &q);
  while (q--) {
    int l1, l2, len, r1, r2;
    scanf("%d%d%d", &l1, &l2, &len);
    r1 = l1 + len - 1;
    r2 = l2 + len - 1;
    if (cnt[r1] - cnt[l1 - 1] == cnt[r2] - cnt[l2 - 1] &&
        check(l1, r1) == check(l2, r2))
      printf("Yes\n");
    else
      printf("No\n");
  }
}
int main() {
  work();
  return 0;
}
