#include <bits/stdc++.h>
using namespace std;
struct sgmnt {
  long long L, R;
  int mxL, mxR, w;
  sgmnt() {}
  sgmnt(long long L, int mxL, long long R, int mxR, int w)
      : L(L), mxL(mxL), R(R), mxR(mxR), w(w) {}
};
const int MAXN = 3 * 1000 * 100 + 10;
long long arr[MAXN];
sgmnt seg[MAXN * 4];
sgmnt merge(sgmnt a, sgmnt b, int s, int m, int e) {
  sgmnt c = sgmnt(a.L, a.mxL, b.R, b.mxR, max(a.w, b.w));
  if ((a.R > 0 && b.L != 0) || (a.R < 0 && b.L < 0)) {
    if (a.mxL == m - s) c.mxL = a.mxL + b.mxL;
    if (b.mxR == e - m) c.mxR = b.mxR + a.mxR;
    c.w = max(c.w, a.mxR + b.mxL);
  }
  c.w = max({c.w, c.mxR, c.mxL});
  return c;
}
void add(int p, int v, int s, int e) {
  if (e - s <= 1) {
    seg[v] = sgmnt(arr[s], 1, arr[s], 1, 1);
    return;
  }
  int m = (s + e) / 2;
  if (p < m)
    add(p, v * 2, s, m);
  else
    add(p, v * 2 + 1, m, e);
  seg[v] = merge(seg[v * 2], seg[v * 2 + 1], s, m, e);
}
int main() {
  int n, b;
  scanf("%d %d", &n, &b);
  n--;
  for (int i = 0; i < n; i++) {
    int a;
    scanf("%d", &a);
    arr[i] = a - b;
    add(i, 1, 0, n);
    b = a;
  }
  int q;
  scanf("%d", &q);
  while (q--) {
    int l, r, d;
    scanf("%d %d %d", &l, &r, &d);
    l--;
    if (!n) {
      cout << 1 << endl;
      continue;
    }
    if (l != 0) {
      arr[l - 1] += d;
      add(l - 1, 1, 0, n);
    }
    if (r != n + 1) {
      arr[r - 1] -= d;
      add(r - 1, 1, 0, n);
    }
    printf("%d\n", seg[1].w + 1);
  }
  return 0;
}
