using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); static int[][] NArr(long n) => Enumerable.Repeat(0, (int)n).Select(_ => NList).ToArray(); public static void Main() { Solve(); } static void Solve() { var n = NN; var t = NList; var m = NN; var init = new long[n - 1]; for (var i = 0; i + 1 < n; ++i) init[i] = t[i] + 3 * (n - i - 1); var seg = new AtCoder.LazySegtree(init); var ans = new long[m]; for (var i = 0; i < m; ++i) { var c = NList; seg.Apply(c[0] - 1, c[1], c[2]); ans[i] = seg.AllProd; } WriteLine(string.Join("\n", ans)); } struct SegOp : AtCoder.ILazySegtreeOperator { public long Identity => 0; public long FIdentity => 0; public long Composition(long nf, long cf) { return nf + cf; } public long Mapping(long f, long x) { return f + x; } public long Operate(long x, long y) { return Math.Max(x, y); } } }