#include <bits/stdc++.h>
using namespace std;
template <class T>
void read(T &x) {
  x = 0;
  int f = 1, ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 - '0' + ch;
    ch = getchar();
  }
  x *= f;
}
const int mod = 1004535809;
const int base = 1e4 + 7;
const int maxn = 2e5 + 50;
int n, q;
char t[maxn];
int H[maxn];
int P[maxn];
int R[maxn];
int len[maxn];
bool mark[maxn];
inline int sub(int x) { return x < 0 ? x + mod : x; }
inline int Substr(int l, int r) {
  int L = len[r] - len[l - 1];
  if (mark[l]) {
    ++L;
    int re = sub(H[r] - (long long)H[l] * P[L] % mod);
    int x = min(r, R[l]) - l + 1;
    if (x & 1)
      re = (re + (long long)t[l] * P[L]) % mod;
    else
      re = sub(re - (long long)t[l] * P[L - 1] % mod);
    return re;
  }
  return sub(H[r] - (long long)H[l - 1] * P[L] % mod);
}
int main() {
  read(n);
  scanf("%s", t + 1);
  P[0] = 1;
  for (int i = 1; i <= n; ++i) P[i] = (long long)P[i - 1] * base % mod;
  for (int i = 1; i <= n; ++i) {
    if (i > 1 && t[i] == '1' && t[i - 1] == '1' && !mark[i - 1]) {
      mark[i] = 1;
      len[i] = len[i - 2];
      H[i] = H[i - 2];
    } else {
      len[i] = len[i - 1] + 1;
      H[i] = ((long long)H[i - 1] * base + t[i]) % mod;
    }
  }
  for (int i = n, k; i >= 1; --i)
    if (t[i] == '1') {
      if (i == n || t[i + 1] != '1') k = i;
      R[i] = k;
    }
  read(q);
  for (int i = 1; i <= q; ++i) {
    int x, y, len;
    read(x), read(y), read(len);
    puts(Substr(x, x + len - 1) == Substr(y, y + len - 1) ? "Yes" : "No");
  }
}
