1.
#define int long long
const int maxn = 4e4+10;
int n, ml, mr, inf = 1e10, tol, dis[1010];
struct Edge{
int u, v, w;
};
Edge edge[maxn];
void solve(){
cin >> n >> ml >> mr;
for(int i=2; i<=n; i++){
edge[tol++] = {i, i-1, inf};
}
for(int i=2; i<=n; i++) dis[i] = inf;
dis[1] = 0;
for(int i=0; i<ml; i++){
int u, v, w; cin >> u >> v >> w;
// dis[v]-dis[u] <= w
edge[tol++] = {v, u, w};
}
for(int i=0; i<mr; i++){
int u, v, w; cin >> u >> v >> w;
// dis[v]-dis[u] >= w
// dis[u]-dis[v] <= -w
edge[tol++] = {u, v, -w};
}
for(int i=0; i<n; i++){
for(int k=0; k<tol; k++){
int u = edge[k].u, v = edge[k].v, w = edge[k].w;
if(dis[u]-dis[v] > w){
dis[u] = dis[v]+w;
}
}
}
for(int i=0; i<tol; i++){
int u = edge[i].u, v = edge[i].v, w = edge[i].w;
if(dis[u]-dis[v] > w){
cout << -1 << endl;
return;
}
}
if(dis[n] == inf){
cout << -2 << endl;
return;
}
cout << dis[n] << endl;
}