func_code_string: #include<bits/stdc++.h>   using namespace std;   #define N 1500009   #define INF 5e8   #define mymin(x,y) (x>=y?y:x)   #define mymax(x,y) (x>=y?x:y)   typedef long long int LL;   map<LL, int> mp[3];   int a[4][N];   struct din{       int ap, id;   }dn[4][N];   bool cmp(din af, din bf){       return af.ap < bf.ap;   }   int main() {    std::ios::sync_with_stdio(0); std::cin.tie(0);       int n[4];       for(int i = 0; i < 4; i++) cin >> n[i];       for(int i = 0; i < 4; i++){           for(int j = 0; j < n[i]; j++){               cin >> dn[i][j].ap;               dn[i][j].id = j + 1;           }       }       for(int i = 0; i < 3; i++){           int m; cin >> m;           for(int j = 0; j < m; j++){               int x, y; cin >> x >> y;               mp[i][1ll * x * N + y] = 1;           }       }       for(int i = 2; i >= 0; i--){           // cout << i <<     << n[i] << endl;           // cout << dn[3][0].id <<     << mp[2][0 * N + 1] << endl;           sort(dn[i + 1], dn[i + 1] + n[i + 1], cmp);           for(int j = 0; j < n[i]; j++){               int ind = 0;               while(ind < n[i + 1] && mp[i][1ll * (j + 1) * N + dn[i + 1][ind].id]) ind++;               if(ind == n[i + 1]) dn[i][j].ap = INF;               else dn[i][j].ap += dn[i + 1][ind].ap;               // cout << dn[i][j].ap <<    ;           }           // cout << endl;       }       sort(dn[0], dn[0] + n[0], cmp);       if(dn[0][0].ap >= INF) cout << -1 << endl;       else cout << dn[0][0].ap << endl;    return 0;   }