#include <bits/stdc++.h>
long long f[200000], tag[524289];
int N, Q;
struct node {
  int stid, enid;
  long long emo, eem, oem;
} T[524289];
inline node operator+(const node &a, const node &b) {
  return {a.stid, b.enid, a.emo + b.emo, std::min(a.eem, b.eem + a.emo),
          std::min(a.oem, b.oem - a.emo)};
}
inline void operator+=(node &a, long long delta) {
  if (a.stid)
    a.oem += delta;
  else
    a.eem += delta;
  if (a.stid && a.enid) a.emo -= delta;
  if (!a.stid && !a.enid) a.emo += delta;
}
inline node init(int pos, long long w) {
  return {pos, pos, pos ? -w : w, pos ? 1ll << 60 : w, pos ? w : 1ll << 60};
}
void build(int p, int l, int r) {
  if (l == r)
    T[p] = init(l & 1, f[l]);
  else {
    int m = l + r >> 1;
    build(p << 1, l, m);
    build(p << 1 | 1, m + 1, r);
    T[p] = T[p << 1] + T[p << 1 | 1];
  }
}
void P(int p, int l, int r, int L, int R, long long w) {
  if (L <= l && r <= R)
    tag[p] += w, T[p] += w;
  else {
    int m = l + r >> 1;
    if (tag[p]) {
      tag[p << 1] += tag[p];
      tag[p << 1 | 1] += tag[p];
      T[p << 1] += tag[p];
      T[p << 1 | 1] += tag[p];
      tag[p] = 0;
    }
    if (L <= m) P(p << 1, l, m, L, R, w);
    if (R > m) P(p << 1 | 1, m + 1, r, L, R, w);
    T[p] = T[p << 1] + T[p << 1 | 1];
  }
}
node G(int p, int l, int r, int L, int R) {
  if (L <= l && r <= R) return T[p];
  int m = l + r >> 1;
  if (tag[p]) {
    tag[p << 1] += tag[p];
    tag[p << 1 | 1] += tag[p];
    T[p << 1] += tag[p];
    T[p << 1 | 1] += tag[p];
    tag[p] = 0;
  }
  if (R <= m) return G(p << 1, l, m, L, R);
  if (L > m) return G(p << 1 | 1, m + 1, r, L, R);
  return G(p << 1, l, m, L, R) + G(p << 1 | 1, m + 1, r, L, R);
}
int main() {
  scanf("%d", &N);
  for (int i = 0; i < N; i++) {
    scanf("%lld", f + i);
    f[i]--;
  }
  build(1, 0, N - 1);
  for (scanf("%d", &Q); Q--;) {
    int op, l, r;
    long long x;
    scanf("%d%d%d", &op, &l, &r);
    if (op == 1) {
      scanf("%lld", &x);
      P(1, 0, N - 1, l, r, x);
    } else {
      node g = G(1, 0, N - 1, l, r);
      puts(g.emo == 0 && g.eem >= 0 && g.oem >= 0 ? "1" : "0");
    }
  }
  return 0;
}
