#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;
}