#include<iostream>
using namespace std;
int study[5][25];
int s[5];
int ans=0,mintime=2000,deep=0;
int vis[5][25];
struct times{
int t1=0;
int t2=0;
}t;
void dfs(int i,int time)
{
if(deep==s[i]){
time+=max(t.t1,t.t2);
if(time<mintime){
mintime=time;
}
return;
}
for(int j=0;j<s[i];j++){
if(!vis[i][j]){
struct times ts=t;
if(t.t1==0){
t.t1=study[i][j];
}else if(t.t2==0){
t.t2=study[i][j];
}else{
int item=min(t.t1,t.t2);
time+=item;
t.t1-=item;
t.t2-=item;
if(t.t1==0){
t.t1=study[i][j];
}else if(t.t2==0){
t.t2=study[i][j];
}
}
vis[i][j]=1;
deep++;
dfs(i,time);
vis[i][j]=0;
deep--;
t=ts;
}
}
}
int main()
{
for(int i=1;i<=4;i++){
cin>>s[i];
}
for(int i=1;i<=4;i++){
for(int j=0;j<s[i];j++){
cin>>study[i][j];
}
}
for(int i=1;i<=4;i++){
dfs(i,0);
ans+=mintime;
mintime=2000;
}
cout<<ans;
return 0;
}