#include <bits/stdc++.h>
using namespace std;
const int MAXN = 300001;
struct nv {
  int res;
  int suf, pref;
  long long *fst, *lst;
  nv() : fst(NULL) {}
  nv(long long *fst, long long *lst)
      : fst(fst), lst(lst), res(1), suf(1), pref(1) {
    if (*fst != 0) {
      suf = pref = res = 1;
    } else {
      suf = pref = res = 0;
    }
  }
};
const nv dummynv;
void combine(const nv &a, const nv &b, nv &com) {
  if (!a.fst) {
    com = b;
    return;
  }
  if (!b.fst) {
    com = a;
    return;
  }
  com.fst = a.fst;
  com.lst = b.lst;
  com.res = max(a.res, b.res);
  com.pref = a.pref;
  com.suf = b.suf;
  if (!(*a.lst <= 0 && *b.fst >= 0)) {
    com.res = max(com.res, a.suf + b.pref);
    if (a.pref == (a.lst - a.fst) + 1) {
      com.pref += b.pref;
    }
    if (b.suf == (b.lst - b.fst) + 1) {
      com.suf += a.suf;
    }
  }
}
int n;
long long a[MAXN], d[MAXN];
nv t[4 * MAXN];
void build(int tl, int tr, int v) {
  if (tl == tr) {
    t[v] = nv(d + tl, d + tr);
    return;
  }
  int tm = (tl + tr) / 2;
  build(tl, tm, 2 * v);
  build(tm + 1, tr, 2 * v + 1);
  combine(t[2 * v], t[2 * v + 1], t[v]);
}
nv getr(int tl, int tr, int v, int l, int r) {
  if (l > r) {
    return dummynv;
  }
  if (tl == l && tr == r) {
    return t[v];
  }
  int tm = (tl + tr) / 2;
  nv ans;
  nv lres = getr(tl, tm, 2 * v, l, min(r, tm));
  nv rres = getr(tm + 1, tr, 2 * v + 1, max(l, tm + 1), r);
  combine(lres, rres, ans);
  return ans;
}
void upd(int tl, int tr, int v, int i) {
  if (tl == tr) {
    t[v] = nv(d + tl, d + tr);
    return;
  }
  int tm = (tl + tr) / 2;
  if (i <= tm) {
    upd(tl, tm, 2 * v, i);
  } else {
    upd(tm + 1, tr, 2 * v + 1, i);
  }
  combine(t[2 * v], t[2 * v + 1], t[v]);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n;
  cin >> a[0];
  d[0] = a[0];
  for (int i = 1; i < n; i++) {
    cin >> a[i];
    d[i] = a[i] - a[i - 1];
  }
  int m;
  cin >> m;
  if (n == 1) {
    for (int i = 0; i < m; i++) cout << "1\n";
    return 0;
  }
  build(1, n - 1, 1);
  for (int i = 0; i < m; i++) {
    int l, r, df;
    cin >> l >> r >> df;
    --l, --r;
    d[l] += df;
    if (l >= 1) {
      upd(1, n - 1, 1, l);
    }
    if (r + 1 < n) {
      d[r + 1] -= df;
      upd(1, n - 1, 1, r + 1);
    }
    int res = getr(1, n - 1, 1, 1, n - 1).res;
    cout << res + 1 << "\n";
  }
}
