/*
                                Bismillahi-r-Rahmani-r-Rahim
                                        RhIeyAaD
                                    IIT-7th Batch,JU
*/
#include<bits/stdc++.h>
using namespace std;

#define pf(a)           printf("%lld\n", a)
#define sf(a)           scanf("%lld", &a)
#define line(a)         getline(cin,(a))
#define ll              long long int
#define MAX             2134567891
#define MID(l,r)        (l+r)>>1
#define fr(i,n)         for(i=0;i<n;i++)
#define rep(i,n)        for(i=1;i<=n;i++)
#define per(i,a,n)      for(i=n;i>=a;i--)
#define FOR(i,a,n)      for(i=a;i<=n;i++)
#define ALL(n)          n.begin(),n.end()
#define mem(x,n)        memset(x,n,sizeof(x))
#define T_C(t)          printf("Case %lld: ",t)
#define TC(t)           printf("Case %lld:\n",t)
#define ans(t,c)        printf("Case %lld: %lld\n",t,c)
#define SETP(n)         cout<<setprecision(n)<<fixed
#define READ            freopen("F:\\Project\\Test_Case.txt","r",stdin)
#define WRITE           freopen("F:\\Project\\Output_Test.txt","w",stdout)
#define IO              ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0);
#define PAIR            pair<ll,ll>
#define MP              make_pair
#define pb(a)           push_back(a)
#define ff              first
#define ss              second
#define MOD             1000000007///10^9
#define p6              1000007 ///10^6->6 zero after 1 **
#define hlw             printf("hlw\n");
#define SN              4*p6
#define NN              111
#define N               p6

ll R[N],G[N],C[N],n;
string s,S;
vector<PAIR>v;
//map <ll,ll> mp;
bool cmp(PAIR a,PAIR b)
{
    if(a.ff==b.ff)
        return a.ss>b.ss;
    return a.ff>b.ff;
}
int main()
{
    //IO;
    //while(1)
    //READ;WRITE;
{
    ll a=0,b=0,c=0,d,e,f,g,i,j,k,l,m,p,q,r,u,w,t,tc,in,mod,loc,diff,val,sz,lo,hi,mid,mn=MAX,mx=0,sum=0,ans=0,m1,m2,m3,i1,i2,i3,l1,l2;
    cin>>r>>g>>a>>b>>c;
    fr(i,a){cin>>R[i];v.pb(MP(R[i],1));}
    fr(i,b){cin>>G[i];v.pb(MP(G[i],2));}
    fr(i,c){cin>>C[i];v.pb(MP(C[i],3));}
    sort(R,R+a, greater<int>());
    sort(G,G+b, greater<int>());
    sort(C,C+c, greater<int>());
    sort(ALL(v),cmp);
    i1=r-1,i2=g-1;
    m1=R[i1],m2=G[i2];
    fr(i,v.size())
    {
        //cout<<v[i].ff<<" "<<v[i].ss<<endl;
        if(!r && !g)break;
        in=v[i].ss;
        val=v[i].ff;
        //cout<<"g "<<g<<endl;
        if(in==1 && r)
        {
            ans+=val,r--;
            //cout<<"Taking R "<<r<<endl;
        }
        else if(in==2 && g)
        {
            ans+=val,g--;
            //cout<<"Taking G "<<g<<endl;
        }
        else if(in==3)
        {
            ans+=val;
            if(r && !g)r--;
            else if(!r && g)g--;
            else if(r && g)
            {
                if(m1<m2)
                {
                    i1--;r--;
                    m1=R[i1];
                }
                else// if(m2<m1)
                {
                    i2--;g--;
                    m2=G[i2];
                }
            }
            else ans-=val;
        }
        //cout<<"ans "<<ans<<endl;
    }
    cout<<ans<<endl;
}
    return 0;
}

/*

*/
/// Check for constraint 0 or 1?
/// long long or double? sqrt or division will work fine??


Measured memory_bytes: 19308