#include<bits/stdc++.h>
using namespace std;
const int maxn=1010,maxm=10010,maxk=100010;
int n,m,k,d[maxn],nm[maxn],f[maxk][maxn],pp[maxn];
struct aaa
{
int t,a,b;
}a[maxm];
bool cmp(aaa x,aaa y)
{
if(x.a!=y.a)return x.a<y.a;
return x.t<y.t;
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<n;i++)
scanf("%d",&d[i]);
for(int i=1;i<=m;i++)
scanf("%d%d%d",&a[i].t,&a[i].a,&a[i].b);
sort(a+1,a+m+1,cmp);
for(int i=1;i<=m;i++)
nm[a[i].a]=max(a[i].t,nm[a[i].a]);
for(int i=1;i<=m;i++)
for(int j=a[i].a;j<a[i].b;j++)
pp[j]++;
for(int i=0;i<=k;i++)
f[i][1]=nm[1];
for(int i=1;i<=k;i++)
for(int j=1;j<=n;j++)
{
f[i][j]=min(f[i-1][j-1]+(d[j-1]-1)*pp[i-1],f[i][j-1]+d[j-1]*pp[i-1]);
if(i-d[j-1]>=0)f[i][j]=min(f[i][j],f[i-d[j-1]][j-1]+d[j-1]*pp[i-1]);
}
printf("%d",f[k][n]);
return 0;
}