#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  long long x = 0;
  bool f = 1;
  char s = getchar();
  while ((s < '0' || s > '9') && s > 0) {
    if (s == '-') f ^= 1;
    s = getchar();
  }
  while (s >= '0' && s <= '9') x = (x << 1) + (x << 3) + s - '0', s = getchar();
  return f ? x : -x;
}
int n, m, a[300005], v, tt;
struct tree {
  long long l, r, lz;
  int a, b1, b2, c1, c2;
} t[300005 << 2];
inline void pushdown(int x, int l, int r) {
  if (t[x].lz == 0) return;
  if (l < r)
    t[x << 1 | 1].l += t[x].lz, t[x << 1 | 1].r += t[x].lz,
        t[x << 1].lz += t[x].lz, t[x << 1].l += t[x].lz, t[x << 1].r += t[x].lz,
        t[x << 1 | 1].lz += t[x].lz;
  t[x].lz = 0;
}
inline void add(int x, int l, int r, int a, int b, long long d) {
  if (l == a && r == b) {
    t[x].l += d, t[x].r += d, t[x].lz += d;
    return;
  }
  pushdown(x, l, r);
  int mid = (l + r) >> 1;
  if (a <= mid) add(x << 1, l, mid, a, min(b, mid), d);
  if (b > mid) add(x << 1 | 1, mid + 1, r, max(a, mid + 1), b, d);
  t[x].a = max(t[x << 1].a, t[x << 1 | 1].a), t[x].l = t[x << 1].l,
  t[x].r = t[x << 1 | 1].r;
  t[x].b1 = t[x << 1].b1, t[x].b2 = t[x << 1].b2, t[x].c1 = t[x << 1 | 1].c1,
  t[x].c2 = t[x << 1 | 1].c2;
  if (t[x << 1].r > t[x << 1 | 1].l) {
    t[x].a = max(t[x].a, t[x << 1].c2 + t[x << 1 | 1].b2);
    if (t[x << 1].c2 == mid - l + 1)
      t[x].b1 = max(t[x].b1, t[x << 1].c2 + t[x << 1 | 1].b2);
    if (t[x << 1].b2 == mid - l + 1)
      t[x].b2 = max(t[x].b2, t[x << 1].b2 + t[x << 1 | 1].b2);
    if (t[x << 1 | 1].b2 == r - mid)
      t[x].c2 = max(t[x].c2, t[x << 1].c2 + t[x << 1 | 1].b2);
  }
  if (t[x << 1].r < t[x << 1 | 1].l) {
    t[x].a = max(t[x].a, t[x << 1].c1 + t[x << 1 | 1].b1);
    if (t[x << 1].c1 == mid - l + 1)
      t[x].b1 = max(t[x].b1, t[x << 1].c1 + t[x << 1 | 1].b1);
    if (t[x << 1 | 1].c1 == r - mid)
      t[x].c1 = max(t[x].c1, t[x << 1].c1 + t[x << 1 | 1].c1);
    if (t[x << 1 | 1].b1 == r - mid)
      t[x].c2 = max(t[x].c2, t[x << 1].c1 + t[x << 1 | 1].b1);
  }
}
int main() {
  n = read();
  for (int i = 1; i <= (n << 2); i++)
    t[i].a = t[i].b1 = t[i].b2 = t[i].c1 = t[i].c2 = 1;
  for (int i = 1; i <= n; i++) add(1, 1, n, i, i, read());
  m = read();
  while (m--) {
    int l = read(), r = read();
    long long d = read();
    add(1, 1, n, l, r, d);
    printf("%d\n", t[1].a);
  }
  return 0;
}
