#include<bits/stdc++.h> #define LL long long using namespace std; struct Node{ LL a, b, c; }a[1000005]; LL b[1000005], f[1000005]; int main(){ int n, m, T; scanf("%d%d%d", &n, &m, &T); for(int i=1; i<=n; i++){ scanf("%lld", &b[i]); } for(int i=1; i<=m; i++){ scanf("%lld%lld%lld", &a[i].b, &a[i].a, &a[i].c); a[i].b=b[a[i].b]; } sort(a+1, a+1+m, [](Node &a, Node &b){return a.b*b.c>b.b*a.c;}); memset(f, -0x3f, sizeof(f)); f[0]=0; for(int i=1; i<=m; i++){ for(int j=T; j>=0; j--){ if(j>=a[i].c){ f[j]=max(f[j], f[j-a[i].c]+a[i].a-a[i].b*j); } } } LL ans=-1ll<<60; for(int i=1; i<=T; i++){ ans=max(ans, f[i]); } printf("%lld\n", ans); return 0; }