#include <bits/stdc++.h>
using namespace std;
int n, Q;
struct st {
  int sz;
  long long mn0, mn1, r, tg;
  void upd(long long v) {
    if (sz & 1) r += v;
    tg += v;
    mn0 += v;
  }
} t[525000], ans;
st operator+(const st& x, const st& y) {
  st o;
  o.tg = 0;
  o.sz = x.sz + y.sz;
  if (y.sz & 1)
    o.r = y.r - x.r;
  else
    o.r = y.r + x.r;
  if (x.sz & 1) {
    o.mn0 = min(x.mn0, y.mn1 + x.r);
    o.mn1 = min(x.mn1, y.mn0 - x.r);
  } else {
    o.mn0 = min(x.mn0, y.mn0 - x.r);
    o.mn1 = min(x.mn1, y.mn1 + x.r);
  }
  return o;
}
void build(int o, int l, int r) {
  if (l == r) {
    int x;
    scanf("%d", &x);
    t[o] = (st){1, x - 1, 1ll << 60, x - 1, 0};
    return;
  }
  int mid = l + r >> 1;
  build(o << 1, l, mid);
  build(o << 1 | 1, mid + 1, r);
  t[o] = t[o << 1] + t[o << 1 | 1];
}
void down(int o) {
  if (t[o].tg) {
    t[o << 1].upd(t[o].tg);
    t[o << 1 | 1].upd(t[o].tg);
    t[o].tg = 0;
  }
}
void upd(int o, int l, int r, int x, int y, int v) {
  if (l == x && r == y) {
    t[o].upd(v);
    return;
  }
  int mid = l + r >> 1;
  down(o);
  if (y <= mid)
    upd(o << 1, l, mid, x, y, v);
  else if (x > mid)
    upd(o << 1 | 1, mid + 1, r, x, y, v);
  else
    upd(o << 1, l, mid, x, mid, v), upd(o << 1 | 1, mid + 1, r, mid + 1, y, v);
  t[o] = t[o << 1] + t[o << 1 | 1];
}
void qry(int o, int l, int r, int x, int y) {
  if (l == x && r == y) {
    ans = ans + t[o];
    return;
  }
  int mid = l + r >> 1;
  down(o);
  if (y <= mid)
    qry(o << 1, l, mid, x, y);
  else if (x > mid)
    qry(o << 1 | 1, mid + 1, r, x, y);
  else
    qry(o << 1, l, mid, x, mid), qry(o << 1 | 1, mid + 1, r, mid + 1, y);
}
int main() {
  scanf("%d", &n);
  build(1, 1, n);
  scanf("%d", &Q);
  while (Q--) {
    int tp, l, r, k;
    scanf("%d%d%d", &tp, &l, &r);
    l++;
    r++;
    if (tp == 1) {
      scanf("%d", &k);
      upd(1, 1, n, l, r, k);
    } else {
      ans = (st){0, 1ll < 60, 1ll << 60, 0, 0};
      qry(1, 1, n, l, r);
      puts(!ans.r && ans.mn0 >= 0 && ans.mn1 >= 0 ? "1" : "0");
    }
  }
  return 0;
}
