#include #define REP(i,a,b) for(int i=(a);i<(b);i++) #define RREP(i,a,b) for(int i=(a);i>=(b);i--) #define pq priority_queue #define P pair #define P2 pair #define P3 pair typedef long long ll; typedef long double ld; using namespace std; const int INF=1e9, MOD=1e9+7, around[]={0,1,1,-1,-1,0,-1,1,0,0}; const ll LINF=1e18; const ld PI=abs(acos(-1)); int n,m,a,b,c,t[100010]; int sz; ll seg[400010]; ll seg_add[400010]; int get_size(int n); ll unit(); ll func(ll a,ll b); int build(int n); int update(int k,int x); //0-indexed int _range_add(int a,int b,int x,int k,int l,int r); int range_add(int a,int b,int x); ll _get(int a,int b,int k,int l,int r); ll get(int a,int b); //[a,b) int main(){ cin >> n; build(n); REP(i,0,n-1) cin >> a,update(i,a+(n-i-1)*3); cin >> m; REP(i,0,m){ cin >> a >> b >> c; range_add(a-1,b,c); cout << get(0,n) << endl; } return 0; } int get_size(int n){ int res=0; while(n) n=n>>1,res++; return (1<>1; seg[k]=func(seg[k*2+1],seg[k*2+2]); } return 0; } int _range_add(int a,int b,int x,int k,int l,int r){ if(b<=l||r<=a) return 0; if(a<=l&&r<=b){seg_add[k]+=x; return 0;} _range_add(a,b,x,2*k+1,l,(l+r)>>1); _range_add(a,b,x,2*k+2,(l+r)>>1,r); seg[k]=func(seg[2*k+1]+seg_add[2*k+1], seg[2*k+2]+seg_add[2*k+2]); return 0; } int range_add(int a,int b,int x){ return _range_add(a,b,x,0,0,sz); } ll _get(int a,int b,int k,int l,int r){ if(b<=l||r<=a) return unit(); if(a<=l&&r<=b) return seg[k]+seg_add[k]; return func(_get(a,b,2*k+1,l,(l+r)>>1), _get(a,b,2*k+2,(l+r)>>1,r))+seg_add[k]; } ll get(int a,int b){ return _get(a,b,0,0,sz); }