#include <bits/stdc++.h>
 
using namespace std;
 
typedef pair<int,int> ii;
int n[4];
int m[3];
ii a[4][150000];
bool va[4][150000];

vector <set <int> > mv[3];
int la[3][1500000];
int ar[3][1500000];

int up(int i, int ra,int l,int r, int q1,int q2, int va){
	if(q2<q1||q2<l||q1>r)return ar[i][ra];
	if(q1<=l&&q2>=r){
		//cout<<l<<'t'<<r<<' '<<ra<<' '<<va<<endl;
		return ar[i][ra]=la[i][ra]=va;
	}
	int m = (l+r)/2;
	if(la[i][ra]){
		up(i,ra<<1,l,m,l,m,la[i][ra]);
		up(i,(ra<<1)|1,m+1,r,m+1,r,la[i][ra]);
		la[i][ra]=0;
	}
	up(i,ra<<1,l,m,q1,q2,va);
	up(i,(ra<<1)|1,m+1,r,q1,q2,va);
	return 0;
}

void flat(int i, int ra, int l, int r){
	if(l==r){
		//cout<<i<<' '<<l<<' '<<ra<<' '<<ar[i][ra]<<endl;
		if(ar[i][ra]){
			a[i][l].first+=ar[i][ra];
			va[i][l]=true;
		}
	}
	else{
		int m = (l+r)/2;
		if(la[i][ra]){
			up(i,ra<<1,l,m,l,m,la[i][ra]);
			up(i,(ra<<1)|1,m+1,r,m+1,r,la[i][ra]);
			la[i][ra]=0;
		}
		flat(i,ra<<1,l,m);
		flat(i,(ra<<1)|1,m+1,r);
	}
}
 
int main(){
	
	//cin.tie(0); ios_base::sync_with_stdio(0);
	
	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>>a[i][j].first,a[i][j].second=j;
	}
	
	int x,y;
	for(int i=0;i<3;i++){
		cin>>m[i];
		mv[i].resize(n[i+1]);
		for(int j=0;j<m[i];j++){
			cin>>x>>y;
			x--;y--;
			mv[i][y].insert(x);
		}
	}
	
	for(int i=0;i<n[3];i++)va[3][i]=true;
	for(int i=2;i>=0;i--){
		sort(a[i+1],a[i+1]+n[i+1]);
		
		for(int j=n[i+1]-1;j>=0;j--)if(va[i+1][a[i+1][j].second]){
			int an=0;
			for(set<int> :: iterator it = mv[i][a[i+1][j].second].begin();it!=mv[i][a[i+1][j].second].end();it++){
				//cout<<i<<' '<<an<<' '<<(*it)-1<<endl;
				up(i,1,0,n[i]-1,an,(*it)-1,a[i+1][j].first);
				an=(*it)+1;
			}
			//cout<<i<<' '<<an<<' '<<n[i]-1<<endl;
			up(i,1,0,n[i]-1,an,n[i]-1,a[i+1][j].first);
		}
		flat(i,1,0,n[i]-1);
	}
	
	//cout<<va[2][1]<<endl;
	int mi = 1000000000;
	for(int i=0;i<n[0];i++)if(va[0][a[0][i].second])mi=min(mi,a[0][i].first);
	if(mi ==1000000000)cout<<-1<<endl;
	else cout<<mi<<endl;
	
	return 0;
}