#include <bits/stdc++.h>
using namespace std;
const int MOD = 998244353;
void M(int& x) {
  if (x >= MOD) x -= MOD;
  if (x < 0) x += MOD;
}
int qp(int a, int b = MOD - 2) {
  int ans = 1;
  for (; b; a = 1LL * a * a % MOD, b >>= 1)
    if (b & 1) ans = 1LL * ans * a % MOD;
  return ans % MOD;
}
template <class T>
T gcd(T a, T b) {
  while (b) {
    a %= b;
    std::swap(a, b);
  }
  return a;
}
template <class T>
bool chkmin(T& a, T b) {
  return a > b ? a = b, 1 : 0;
}
template <class T>
bool chkmax(T& a, T b) {
  return a < b ? a = b, 1 : 0;
}
char buf[1 << 21], *p1 = buf, *p2 = buf;
inline char getc() {
  return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin), p1 == p2)
             ? EOF
             : *p1++;
}
inline int _() {
  int x = 0, f = 1;
  char ch = getc();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getc();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10ll + ch - 48;
    ch = getc();
  }
  return x * f;
}
const int N = 2e5 + 7;
std::pair<int, int> operator+(const std::pair<int, int>& a,
                              const std::pair<int, int>& b) {
  return std::pair<int, int>((a.first + b.first) % MOD,
                             (a.second + b.second) % MOD);
}
std::pair<int, int> operator-(const std::pair<int, int>& a,
                              const std::pair<int, int>& b) {
  return std::pair<int, int>((a.first - b.first + MOD) % MOD,
                             (a.second - b.second + MOD) % MOD);
}
std::pair<int, int> operator*(const std::pair<int, int>& a,
                              const std::pair<int, int>& b) {
  return std::pair<int, int>(1LL * a.first * b.first % MOD,
                             1LL * a.second * b.second % MOD);
}
std::pair<int, int> operator+(const std::pair<int, int>& a, int b) {
  return std::pair<int, int>((a.first + b) % MOD, (a.second + b) % MOD);
}
int n, cnt[N];
char s[N];
std::pair<int, int> ha[N][2], base[N];
const std::pair<int, int> Base = std::pair<int, int>(31, 47);
std::pair<int, int> get(int l, int r, int opt) {
  return ha[r][opt] - ha[l - 1][opt] * base[cnt[r] - cnt[l - 1]];
}
int main() {
  scanf("%d%s", &n, s + 1);
  base[0] = std::pair<int, int>(1, 1);
  for (int i = 1; i < n + 1; i++) {
    if (s[i] == '0') {
      cnt[i] = cnt[i - 1] + 1;
      ha[i][0] = ha[i - 1][0] * Base + ('0' + (i & 1));
      ha[i][1] = ha[i - 1][1] * Base + ('0' + ((i & 1) ^ 1));
    } else {
      cnt[i] = cnt[i - 1];
      ha[i][0] = ha[i - 1][0];
      ha[i][1] = ha[i - 1][1];
    }
    base[i] = base[i - 1] * Base;
  }
  int q;
  scanf("%d", &q);
  for (int __ = 0; __ < q; __++) {
    int x1, x2, l;
    scanf("%d%d%d", &x1, &x2, &l);
    puts(get(x1, x1 + l - 1, x1 & 1) == get(x2, x2 + l - 1, x2 & 1) ? "Yes"
                                                                    : "No");
  }
  return 0;
}
