#include<bits/stdc++.h>
using namespace std;
int n,s[10],sum,timen[25],dp[30][2000],ans,num;
int main()
{
for(int i=1;i<=4;++i)
scanf("%d",&s[i]);
for(int i=1;i<=4;++i)
{
sum=0;
for(int j=1;j<=s[i];++j)
{
scanf("%d",&timen[j]);
sum+=timen[j];
}
sort(timen,timen+s[i]);
for(int j=1;j<=s[i];++j)
{
for(int k=0;k<=sum/2;++k)
{
if(k>=timen[j])
{
dp[j][k]=max(dp[j-1][k],dp[j-1][k-timen[j]]+timen[j]);
}
num=max(dp[j][k],num);
}
}
ans+=max(num,sum-num);
}
cout<<ans;
return 0;
}
用的是动规,输出完全不对,不知道哪里错了