#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#define pii pair<int, int>
#define t3 tuple<int, int, int>
#define pepperX ios_base::sync_with_stdio(false); cin.tie(0);
using ll = long long;
using namespace std;
#define int ll
struct A{
int core, rate, value;
bool operator<(const A& o)const{
return rate>o.rate;
}
};
vector<A> v;
void solve(){
int n, m;
cin >> n;
for(int i=1; i<=n; i++){
int c, r, p;
cin >> c >> r >> p;
v.push_back({c, r, -p});
}
cin >> m;
for(int i=1; i<=m; i++){
int c, r, p;
cin >> c >> r >> p;
v.push_back({-c, r, p});
}
sort(v.begin(), v.end());
vector<int> pre(100005, -1e18), now;
pre[0]=0;
for(auto [c,r,p]:v){
now=pre;
for(int j=0; j<=1e5; j++){
if(0<=j-c && j-c<=1e5 && pre[j-c]!=-1e18)now[j]=max(pre[j], pre[j-c]+p);
//else now[j]=pre[j];
}
pre=now;
}
cout << *max_element(pre.begin(), pre.end());
}
int32_t main(){
pepperX;
int tcs=1;
//cin >> tcs;
while(tcs--) solve();
return 0;
}