#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
const int base = 141937;
const int mod1 = 998244353;
const int mod2 = 1e9 + 7;
int gi() {
  int x = 0, o = 1;
  char ch = getchar();
  while ((ch < '0' || ch > '9') && ch != '-') ch = getchar();
  if (ch == '-') o = -1, ch = getchar();
  while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
  return x * o;
}
int n, cnt[N];
char s[N];
pair<int, int> hsh[N][2], pw[N];
pair<int, int> operator+(pair<int, int> a, pair<int, int> b) {
  return make_pair((a.first + b.first) % mod1, (a.second + b.second) % mod2);
}
pair<int, int> operator-(pair<int, int> a, pair<int, int> b) {
  return make_pair((a.first - b.first + mod1) % mod1,
                   (a.second - b.second + mod2) % mod2);
}
pair<int, int> operator*(pair<int, int> a, pair<int, int> b) {
  return make_pair(1ll * a.first * b.first % mod1,
                   1ll * a.second * b.second % mod2);
}
pair<int, int> mk(int v) { return make_pair(v, v); }
pair<int, int> gethsh(int l, int r, int t) {
  return hsh[r][t] - hsh[l - 1][t] * pw[cnt[r] - cnt[l - 1]];
}
int main() {
  cin >> n;
  scanf("%s", s + 1);
  pw[0] = mk(1);
  for (int i = 1; i <= n; i++) pw[i] = pw[i - 1] * mk(base);
  for (int i = 1; i <= n; i++) {
    cnt[i] = cnt[i - 1] + (s[i] == '0');
    for (int j = 0; j < 2; j++) {
      hsh[i][j] = hsh[i - 1][j];
      if (s[i] == '0') {
        hsh[i][j] = hsh[i][j] * mk(base);
        if (i % 2 == j)
          hsh[i][j] = hsh[i][j] + mk(1);
        else
          hsh[i][j] = hsh[i][j] + mk(2);
      }
    }
  }
  int q = gi();
  while (q--) {
    int x = gi(), y = gi(), len = gi();
    cout << (gethsh(x, x + len - 1, x & 1) == gethsh(y, y + len - 1, y & 1)
                 ? "YES\n"
                 : "NO\n");
  }
  return 0;
}
