#include <bits/stdc++.h>
using namespace std;
#include<chrono>
#define ll long long
#define ld long double
#define eb emplace_back
#define pb push_back
#define mt make_tuple
#define tc  ll t; cin>>t; while(t--)
#define io ios::sync_with_stdio(false),cin.tie(NULL),cout.tie(NULL);
#define F first
#define S second
#define vi vector<ll>
#define pii pair<ll,ll>
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define vii vector<pair<ll,ll>>
ll gcd(ll n,ll m)
{
    if(n==0)
            return m;
    return gcd(m%n,n);
}
bool ifprime(ll n)
{
if(n==1)
return false;
    ll i;
for(i=2;i*i<=n;i++)
{
if(n%i==0)
return false;
 
}
return true;
}
void disp(vi v)
{
    for(auto u:v)
    cout<<u<<" ";
    cout<<"\n";
}
void remleadzero(vector<int> &v)
{
    vector<int> u;
    int i=0;
    while(v[i]==0)
        i++;
    while(i<v.size())
    {
        u.push_back(v[i]);
        i++;
    }
    v=u;
}
#define mod 1000000007LL
/*
void myscanf(long long *n)
{
    register long long c=getchar_unlocked();
    *n=0;
    for(;(c<48 ||c>57);c=getchar_unlocked())
        ;
    for(;(c>47 && c<58);c=getchar_unlocked())
    {
        *n=(*n<<1)+(*n<<3)+(c&15);
    }
 
}
void fastscan(long long &number)
{
    bool negative = false;
    register long long c;
 
    number = 0;
 
    c = getchar_unlocked();
    if (c=='-')
    {
 
        negative = true;
 
        c = getchar_unlocked();
    }
 
 
    for (; (c>47 && c<58); c=getchar_unlocked())
        number = number *10 + c - 48;
 
 
    if (negative)
        number *= -1;
}
*/
ll fast_expo(ll n,ll m, ll md)
{
    ll a=1;
    while(m>0)
    {
        if(m&1) a=(a*n)%md;
        n=(n*n)%md;
        m/=2;
    }
    return a%md;
}
// checks if a number is a perfect square in almost O(1) time
long long sqroot(long long n){
    long double N = n;
    N = sqrtl(N);
    long long sq = N-2;
    sq = max(sq,0LL);
    while(sq*sq<n){
        sq++;
    } 
    if((sq*sq)==n)
        return sq;
    return -1;
}
int dig_sum(ll n){
    int ret=0;
    while(n>0){
        ret+=(n%10);
        n/=10;
    }
    return ret;
}


int main()
{
    io;
    ll A,B,C,x,y;
    cin>>x>>y>>A>>B>>C;
    int a[A],b[B],c[C];
    for(int i=0;i<A;i++)
        cin>>a[i];
    for(int i=0;i<B;i++)
        cin>>b[i];
    for(int i=0;i<C;i++)
        cin>>c[i];
    sort(a,a+A);
    sort(b,b+B);
    sort(c,c+C);
    vector<int> red,green;
    int i = A-1;
    ll ans = 0;
    while(i>=0 and x>0){
        red.push_back(a[i]);
        ans+=a[i];
        i--;
        x--;
    }
    i = B-1;
    while(i>=0 and y>0){
        green.push_back(b[i]);
        ans+=b[i];
        i--;
        y--;
    }
    // cout<<ans<<' ';
    i = C-1;
    // cout<<i<<'\n';
    int j = green.size()-1, k=red.size()-1;
    while(i>=0 and j>=0 and k>=0){
        if(c[i]>green[j] or c[i]>red[k]){
            if(c[i]-green[j]>c[i]-red[k])
                ans+=(c[i--]-green[j--]);
            else ans+=(c[i--]-red[k--]);
        }
        else break;
    }
    while(i>=0 and j>=0){
        if(c[i]>green[j])
            ans+=(c[i--]-green[j--]);
        else break;
    }
    while(i>=0 and k>=0){
        if(c[i]>red[k])
            ans+=(c[i--]-red[k--]);
        else break;
    }
    cout<<ans;
    return 0;
}


Measured memory_bytes: 2552