#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+10;
int n,q,w,l,r,d,a[N],b[N];
int fk[N],dat[N],alladd[N],sum[N],len;
void fkinit(){
len=sqrt(n);
for(int i=1;i<=n;i++){
dat[i]=a[i];
fk[i]=(i-1)/len+1;
sum[fk[i]]+=dat[i];
}
}
void fkadd(int l,int r,int x){
int s=fk[l],t=fk[r];
if(s==t)
for(int i=l;i<=r;i++)
dat[i]+=x,sum[s]+=x;
else{
for(int i=l;fk[i]==s;i++)
dat[i]+=x,sum[s]+=x;
for(int i=s+1;i<t;i++)
alladd[i]+=x,sum[i]+=len*x;
for(int i=r;fk[i]==t;i--)
dat[i]+=x,sum[t]+=x;
}
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin>>n>>q>>w;
for(int i=1;i<=n;i++){
cin>>a[i];
}
fkinit();
int x=0,tmp_i=1,tmp_j=1,tmp_k=1;
while(x<w){
if(tmp_j==n+1){
tmp_j=1;
tmp_i<<=1;
b[tmp_k++]=x;
}
x+=a[tmp_j]*tmp_i;
tmp_j++;
}
if(tmp_j!=n+1)
while(tmp_j<n+1){
x+=a[tmp_j]*tmp_i;
tmp_j++;
}
b[tmp_k++]=x;
while(q--){
cin>>l>>r>>d;
fkadd(l,r,d);
int tmp_l=(r-l+1)*d;
int tmp_m=0;
for(int i=1;i<tmp_k;i++){
tmp_m+=tmp_l;
b[i]+=tmp_m;
tmp_l<<=1;
if(b[i]>=w)
tmp_k=i+1;
}
int tmp_n=w-b[tmp_k-2],tmp_o=0,tmp_p;
tmp_o=1<<(tmp_k-2);
if(tmp_n%tmp_o==0)
tmp_p=tmp_n/tmp_o;
else
tmp_p=tmp_n/tmp_o+1;
int tmp_sum=0;
int i;
int tmp_ans=0;
for(i=1;tmp_sum<tmp_p;i++){
tmp_sum+=sum[i];
}
tmp_sum-=sum[i-1];
for(int j=(i-2)*len+1;j<=min((i-1)*len,n);j++){
++tmp_ans;
tmp_sum+=dat[j]+alladd[fk[j]];
if(tmp_sum>=tmp_p){
break;
}
}
cout<<(tmp_k-2)*n+tmp_ans+(i-2)*len-1<<'\n';
}
return 0;
}