#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e5 + 14;
int n, segsz;
long long a[maxn];
struct node {
  int pre, suf, ans, pans, sans, sz;
} iman[maxn << 2];
node operator+(const node &a, const node &b) {
  return {a.pre + (a.pre == a.sz ? b.pre : 0),
          b.suf + (b.suf == b.sz ? a.suf : 0),
          max({a.ans, b.ans, a.suf + b.pans, a.sans + b.pre}),
          a.pans + (a.suf == a.sz ? b.pans : (a.pans == a.sz ? b.pre : 0)),
          b.sans + (b.pre == b.sz ? a.sans : (b.sans == b.sz ? a.suf : 0)),
          a.sz + b.sz};
}
void update(int i, long long x) {
  i += segsz;
  if (x > 0)
    iman[i] = {0, 1, 1, 1, 1, 1};
  else if (x < 0)
    iman[i] = {1, 0, 1, 1, 1, 1};
  else
    iman[i] = {0, 0, 0, 0, 0, 1};
  while (i >>= 1) iman[i] = iman[i << 1] + iman[i << 1 | 1];
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> n;
  segsz = n;
  while (__builtin_popcount(segsz) > 1) segsz++;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    if (i) update(i - 1, a[i] - a[i - 1]);
  }
  for (int i = n - 1; i >= 1; i--) a[i] -= a[i - 1];
  for (int i = 0; i < n - 1; i++) a[i] = a[i + 1];
  int q;
  cin >> q;
  while (q--) {
    int l, r, d;
    cin >> l >> r >> d;
    l--;
    if (l) {
      a[l - 1] += d;
      update(l - 1, a[l - 1]);
    }
    if (r < n) {
      a[r - 1] -= d;
      update(r - 1, a[r - 1]);
    }
    cout << iman[1].ans + 1 << '\n';
  }
}
