#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 5;
const int inf = 0x3f3f3f3f;
const long long llinf = 0x3f3f3f3f3f3f3f3f;
int t, n, pre[maxn], q, x, y, z;
long long odhash[maxn], evhash[maxn], base = 5119, ti[maxn], mod = 998244353;
string s;
int main() {
  ios::sync_with_stdio(false);
  cin >> n;
  cin >> s;
  ti[0] = 1;
  for (int i = 1; i <= n; i++) {
    ti[i] = ti[i - 1] * base % mod;
    pre[i] = pre[i - 1] + '1' - s[i - 1];
    if (s[i - 1] == '0') {
      if (i & 1) {
        evhash[i] = (evhash[i - 1] * base + 2) % mod;
        odhash[i] = (odhash[i - 1] * base + 1) % mod;
      } else {
        evhash[i] = (evhash[i - 1] * base + 1) % mod;
        odhash[i] = (odhash[i - 1] * base + 2) % mod;
      }
    } else {
      evhash[i] = (evhash[i - 1]);
      odhash[i] = (odhash[i - 1]);
    }
  }
  cin >> q;
  while (q--) {
    cin >> x >> y >> z;
    if (x > y) swap(x, y);
    if (pre[x + z - 1] - pre[x - 1] != pre[y + z - 1] - pre[y - 1]) {
      cout << "No\n";
      continue;
    }
    unsigned long long hash1, hash2;
    if (x & 1)
      hash1 = (odhash[x + z - 1] -
               (odhash[x - 1] * ti[pre[x + z - 1] - pre[x - 1]]) % mod + mod) %
              mod;
    else
      hash1 = (evhash[x + z - 1] -
               (evhash[x - 1] * ti[pre[x + z - 1] - pre[x - 1]]) % mod + mod) %
              mod;
    if (y & 1)
      hash2 = (odhash[y + z - 1] -
               (odhash[y - 1] * ti[pre[y + z - 1] - pre[y - 1]]) % mod + mod) %
              mod;
    else
      hash2 = (evhash[y + z - 1] -
               (evhash[y - 1] * ti[pre[y + z - 1] - pre[y - 1]]) % mod + mod) %
              mod;
    if (hash1 == hash2) {
      cout << "Yes\n";
    } else {
      cout << "No\n";
    }
  }
}
