#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 1e4 + 10;
int n, m, C;
int v[N], w[N], d[N];
int a[7], b[7], c[7];
LL f[10001];
int go(int a, int b, int c, int x) {
return a * x * x + b * x + c;
}
inline int read() {
int f = 1, x = 0;
char c = getchar();
while (c < '0' || c > '9') {
if (c == '-')
f = -1;
c = getchar();
}
while (c >= '0' && c <= '9') {
x = x * 10 + c - '0';
c = getchar();
}
return f * x;
}
int main() {
scanf("%d %d %d", &n, &m, &C);
int num = 1;
int tiji[N + 1000], jia[N + 1000];
for (int i = 1; i <= n; i++) {
v[i] = read(), w[i] = read(), d[i] = read();
for (int k = 1; k <= d[i] && k * d[i] <= C; k *= 2) {
tiji[num] = v[i] * k;
jia[num] = w[i] * k;
d[i] -= k;
num++;
}
if (d[i] >= 0)
tiji[num] = d[i] * v[i], jia[num] = d[i] * w[i];
}
//完美2进制优化
int r[100];
int q = 1;
int t = C;
for (int k = 1; k <= t; k *= 2) {
r[q] = k;
t -= k;
q++;
}
if (t >= 0)
r[q] = t;
for (int i = 1; i <= m; i++) {
a[i] = read(), b[i] = read(), c[i] = read();
for (int j = 1; j <= q; j++) {
num++;
tiji[num] = r[j];
jia[num] = go(a[i], b[i], c[i], r[j]);
}
}
//奇货2进制优化
for (int i = 1; i <= num; i++)
for (int j = C; j >= 0; j--)
f[j] = max(f[j], f[j - tiji[i]] + jia[i]);
cout << f[C];
}
全部超时和RA,不知道为啥,全部运用2进制优化,然后用01背包一个一个做,不知道错哪了