#include <bits/stdc++.h>
using namespace std;
long long a[300010];
int c[4 * 300010], p[4 * 300010], s[4 * 300010];
int b[4 * 300010], d[4 * 300010];
void update(int n, int tl, int tr, int pos, long long val) {
  if (tl == tr) {
    if (val == 0) {
      p[n] = 0;
      s[n] = 0;
      c[n] = 0;
      return;
    }
    p[n] = 1;
    s[n] = 1;
    c[n] = 1;
    if (val > 0) {
      b[n] = 1;
      d[n] = 1;
    } else {
      d[n] = 2;
      b[n] = 2;
    }
    return;
  }
  int tm = (tl + tr) / 2;
  if (pos <= tm)
    update(2 * n, tl, tm, pos, val);
  else
    update(2 * n + 1, tm + 1, tr, pos, val);
  p[n] = p[2 * n];
  b[n] = b[2 * n];
  if (p[2 * n] == tm - tl + 1) {
    if (b[2 * n] == 1 && b[2 * n + 1] > 0) {
      p[n] += p[2 * n + 1];
      b[n] |= b[2 * n + 1];
    }
    if (b[2 * n] != 1 && b[2 * n + 1] == 2) {
      p[n] += p[2 * n + 1];
    }
  }
  s[n] = s[2 * n + 1];
  d[n] = d[2 * n + 1];
  if (s[2 * n + 1] == tr - tm) {
    if (d[2 * n + 1] == 2 && d[2 * n] > 0) {
      s[n] += s[2 * n];
      d[n] |= d[2 * n];
    }
    if (d[2 * n + 1] != 2 && d[2 * n] == 1) {
      s[n] += s[2 * n];
    }
  }
  c[n] = max(c[2 * n], c[2 * n + 1]);
  if (d[2 * n] == 1 && b[2 * n + 1] > 0)
    c[n] = max(c[n], s[2 * n] + p[2 * n + 1]);
  if (d[2 * n] > 0 && b[2 * n + 1] == 2)
    c[n] = max(c[n], s[2 * n] + p[2 * n + 1]);
}
int main() {
  int n, i, m, l, r, d;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) scanf("%I64d", &a[i]);
  for (i = n; i >= 1; i--) a[i] -= a[i - 1];
  for (i = 2; i <= n; i++) update(1, 2, n, i, a[i]);
  scanf("%d", &m);
  for (i = 1; i <= m; i++) {
    scanf("%d%d%d", &l, &r, &d);
    if (l != 1) {
      a[l] += d;
      update(1, 2, n, l, a[l]);
    }
    if (r != n) {
      a[r + 1] -= d;
      update(1, 2, n, r + 1, a[r + 1]);
    }
    printf("%d\n", c[1] + 1);
  }
  return 0;
}
