#include <bits/stdc++.h>
using namespace std;
struct node {
  long long val;
  int sl, sr, l, r, ans, len;
  void insert(long long v) {
    val += v;
    sl = sr = (val > 0) - (val < 0);
    l = r = ans = (val != 0);
    len = 1;
    return;
  }
  void merge(node x, node y) {
    l = x.l;
    r = y.r;
    sl = x.sl;
    sr = y.sr;
    len = x.len + y.len;
    ans = max(x.ans, y.ans);
    if (x.sr <= y.sl && x.sr && y.sl) {
      ans = max(ans, x.r + y.l);
      if (l == x.len) l = x.len + y.l;
      if (r == y.len) r = y.len + x.r;
    }
  }
} a[1 << 20];
int n, o, m;
void update(int x, long long v) {
  x += o;
  a[x].insert(v);
  while (x >>= 1) a[x].merge(a[x << 1], a[x << 1 | 1]);
  return;
}
int main() {
  scanf("%d", &n);
  for (o = 1; o < n; o <<= 1)
    ;
  o--;
  int p;
  for (int(i) = (int)(1); (i) <= (int)(n); (i)++) {
    int v;
    scanf("%d", &v);
    if (i > 1) update(i - 1, p - v);
    p = v;
  }
  scanf("%d", &m);
  while (m--) {
    int l, r, d;
    scanf("%d%d%d", &l, &r, &d);
    if (l > 1) update(l - 1, -d);
    if (r < n) update(r, d);
    printf("%d\n", a[1].ans + 1);
  }
  return 0;
}
