#include<bits/stdc++.h>
using namespace std;
int n,m,k,d[10002],t1[10002],ans,d2[10002];
struct edge{
int num,sum;
}d1[10002];
struct node{
int t,a,b;
}p[10005];
bool cmp(edge x,edge y){
return x.sum>=y.sum;
}
int main(){
cin>>n>>m>>k;
for(int i=1;i<n;i++){
cin>>d[i];
d1[i].num=i;
}
for(int i=1;i<=m;i++){
cin>>p[i].t>>p[i].a>>p[i].b;
d2[p[i].a]=max(d2[p[i].a],p[i].t);
for(int i=p[i].a;i<p[i].b;i++)
d1[i].sum++;
}
sort(d1+1,d1+n+1,cmp);
for(int i=1;i<n;i++){
d[d1[i].num]-=min(d[d1[i].num],k);
k-=min(d[d1[i].num],k);
if(!k)break;
}
for(int i=1;i<=n;i++)
d2[i]=max(d2[i],d2[i-1]+d[i-1]);
for(int i=1;i<=n;i++)
t1[i]=d2[i-1]+d[i-1];
for(int i=1;i<=m;i++)
ans+=(t1[p[i].b]-p[i].t);
cout<<ans;
return 0;
}