#include <bits/stdc++.h>
using namespace std;
const long long MAXN = 3e5 + 17;
inline long long sign(long long x) { return x ? (x > 0 ? 1 : -1) : 0; }
long long A[MAXN];
long long lv[MAXN << 2], rv[MAXN << 2], hl[MAXN << 2];
inline void Pushup(long long rt, long long l, long long r) {
  long long m = (l + r) >> 1;
  long long llen = m - l + 1, rlen = r - m;
  hl[rt] = max(hl[(rt << 1)], hl[(rt << 1 | 1)]);
  lv[rt] = lv[(rt << 1)];
  rv[rt] = rv[(rt << 1 | 1)];
  if (!A[m] || !A[m + 1] || sign(A[m]) < sign(A[m + 1]))
    return;
  else {
    hl[rt] = max(hl[rt], rv[(rt << 1)] + lv[(rt << 1 | 1)]);
    if (lv[(rt << 1)] == llen) lv[rt] += lv[(rt << 1 | 1)];
    if (rv[(rt << 1 | 1)] == rlen) rv[rt] += rv[(rt << 1)];
  }
}
void Build(long long rt, long long l, long long r) {
  if (l == r) {
    if (A[l]) hl[rt] = lv[rt] = rv[rt] = 1;
    return;
  }
  long long m = (l + r) >> 1;
  Build((rt << 1), l, m);
  Build((rt << 1 | 1), m + 1, r);
  Pushup(rt, l, r);
}
void Update(long long p, long long v, long long rt, long long l, long long r) {
  if (l == r) {
    A[l] += v;
    if (A[l] != 0)
      hl[rt] = lv[rt] = rv[rt] = 1;
    else
      hl[rt] = lv[rt] = rv[rt] = 0;
    return;
  }
  long long m = (l + r) >> 1;
  if (p <= m)
    Update(p, v, (rt << 1), l, m);
  else
    Update(p, v, (rt << 1 | 1), m + 1, r);
  Pushup(rt, l, r);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  long long n;
  cin >> n;
  for (long long i = 1; i <= n; ++i) cin >> A[i];
  for (long long i = 1; i < n; ++i) A[i] = A[i + 1] - A[i];
  A[n] = 0;
  if (n == 1) {
    int m;
    cin >> m;
    while (m--) cout << "1\n";
    exit(0);
  }
  Build(1, 1, n - 1);
  long long m;
  cin >> m;
  while (m--) {
    long long l, r, d;
    cin >> l >> r >> d;
    if (l != 1) Update(l - 1, d, 1, 1, n - 1);
    if (r != n) Update(r, -d, 1, 1, n - 1);
    cout << hl[1] + 1 << "\n";
  }
}
