#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,C,cnt;
int V[10006],W[10006],D[10086],newV[100001],newW[100001];
int fz[1001][20005],a[10086],b[10086],c[10086];
int f[1000086];
void fp(int k)
{
for(int i=0;i<=C;i++)
{
fz[k][i]=a[k]*i*i+b[k]*i+c[k];
}
}
void cf(int k){
int z=1;
while(z<D[k])
{
cnt++;
newV[cnt]=z*V[k];
newW[cnt]=z*W[k];
D[k]-=z;
z*=2;
}
if(D[k]>0){
cnt++;
newV[cnt]=D[k]*V[k];
newW[cnt]=D[k]*W[k];
}
}
signed main()
{
ios::sync_with_stdio(false);
cin>>n>>m>>C;
for(int i=1;i<=n;i++)
{
cin>>V[i]>>W[i]>>D[i];
if(D[i]==1)
{
for(int j=C;j>=V[i];j--){
f[j]=max(f[j],f[j-V[i]]+W[i]);
}
}
if(D[i]>1){
cf(i);
for(int j=1;j<=cnt;j++)
{
for(int k=C;k>=newV[j];k--)
{
f[k]=max(f[k],f[k-newV[j]]+newW[j]);
}
}
cnt=0;
}
}
for(int i=1;i<=m;i++)
{
cin>>a[i]>>b[i]>>c[i];
fp(i);
for(int k=C;k>=0;k--)
for(int j=C;j>=0;j--){
if(k>=j){
f[k]=max(f[k],f[k-j]+fz[i][j]);
}
}
}
cout<<f[C];
return 0;
}