code:
#include<bits/stdc++.h>
#define maxn 10010
#define maxm 7
#define maxc 1010
#define int long long
using namespace std;
int n,m,C,V,W,D,cnt;
int v[maxn*10],w[maxn*10];
int a[maxm],b[maxm],c[maxm],dp[2][maxc];
signed main(){
cin>>n>>m>>C;
for(int i=1;i<=n;++i){
cin>>V>>W>>D;
int resw=W,resv=V;
for(int res=1;res<=D;res*=2,resw*=2,resv*=2){
D-=res;
v[++cnt]=resv;
w[cnt]=resw;
}
if(D>0){
v[++cnt]=V*D;
w[cnt]=W*D;
}
}
for(int i=1;i<=m;++i){cin>>a[i]>>b[i]>>c[i];}
for(int i=1;i<=cnt;++i){
for(int j=C;j>=0;--j){
if(j>=v[i])dp[i%2][j]=max(dp[i%2^1][j-v[i]]+w[i],dp[i%2^1][j]);
else dp[i%2][j]=dp[i%2^1][j];
}
}
for(int i=cnt+1;i<=cnt+m;++i){
for(int j=0;j<=C;++j){
dp[i%2][j]=dp[i%2^1][j];
for(int k=0;k<=j;++k){
int f=a[i-cnt]*k*k+b[i-cnt]*k+c[i-cnt];
dp[i%2][j]=max(dp[i%2][j],dp[i%2^1][j-k]+f);
}
}
}
cout<<dp[(cnt+m)%2][C];
return 0;
}