#include<iostream>
#include<cstdio>
using namespace std;
long long n,m,C;
long long v1,w1,d1,y;
long long v2,w2;
long long a,b,c,z;
long long dp[10001];
int main()
{
scanf("%lld%lld%lld",&n,&m,&C);
long long i,j,k,l;
for(i=1;i<=n;i++)
{
scanf("%lld%lld%lld",&v1,&w1,&d1);
if(d1>=C/v1)
{
for(j=v1;j<=C;j++)
dp[j]=max(dp[j],dp[j-v1]+w1);
}
else
{
k=1;
while(d1>k)
{
d1-=k;
v2=v1*k;
w2=w1*k;
k*=2;
for(j=C;j>=v2;j--)
dp[j]=max(dp[j],dp[j-v2]+w2);
}
if(d1>0)
{
v2=d1*v1;
w2=d1*w1;
for(j=C;j>=v2;j--)
dp[j]=max(dp[j],dp[j-v2]+w2);
}
}
}
for(i=1;i<=m;i++)
{
scanf("%lld%lld%lld",&a,&b,&c);
z=-(b/(2*a));
for(j=C;j>=0;j--)
for(l=1;l<=j;l++)
{
if(a<0&&z>0&&l>z+1)
break;
if(a>0&&z>0&&l>z&&l<2*z)
l=2*z;
y=a*l*l+b*l+c;
dp[j]=max(dp[j],dp[j-l]+y);
}
}
printf("%lld",dp[C]);
return 0;
}