#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #include<cmath> using namespace std; int read() { int x=0,f=1;char ch=getchar(); while(ch<'0' || ch>'9') { if(ch=='-') f=-1; ch=getchar(); } while(ch>='0' && ch<='9') { x=x*10+ch-'0'; ch=getchar(); } return x*f; } int n,m,k,d[1005],maxt[1005],sum[1005],g[1005],t[10005],car[1005],a[10005],b[10005]; int ans,maxn,fast; int i; int main() { n=read(); m=read(); k=read(); for(i=1;i<n;i++) d[i]=read(); for(i=1;i<=m;i++) { t[i]=read(); a[i]=read(); b[i]=read(); maxt[a[i]]=max(maxt[a[i]],t[i]); sum[b[i]]++; } for(i=2;i<=n;i++) sum[i]+=sum[i-1]; car[1]=maxt[1]; for(i=2;i<=n;i++) { car[i]=max(car[i-1],maxt[i-1]); car[i]+=d[i-1]; } for(i=1;i<=m;i++) { ans+=car[b[i]]-t[i]; } while(k--) { g[n]=g[n-1]=n; maxn=0; for(i=n-2;i>=1;i--) { if(car[i+1]<=maxt[i+1]) g[i]=i+1; else g[i]=g[i+1]; } for(i=1;i<n;i++) { if(sum[g[i]]-sum[i]>maxn && d[i]!=0) { maxn=sum[g[i]]-sum[i]; fast=i; } } ans-=maxn; d[fast]--; for(i=2;i<=n;i++) { car[i]=max(car[i-1],maxt[i-1]); car[i]+=d[i-1]; } } printf("%d",ans); return 0; }