#include <bits/stdc++.h>
 
using namespace std;
 
#define SZ(x) ((int)(x).size())
using namespace std;
typedef pair<int,int> PII;
#define FF first
#define SS second
#define MP make_pair
#define PB push_back
#define REP(i,n) for (int i = 0; i < n; ++i)
#define FOR(i,a,b) for (int i = a; i <= b; ++i)
#define M 1000000007
#define MM 998244353
#define SZ(a) int((a).size())
#define all(v) (v).begin(), (v).end()
#define uni(v) sort(all(v)), (v).erase(unique(all(v)), (v).end())
#define mod 1000000007
using ll = long long;

//a and b are assumed to be taken modulo p
inline ll add(ll a, ll b, ll p = mod){ ll c = a + b; if(c >= p) c -= p; return c; }
inline ll sub(ll a, ll b, ll p = mod){ ll c = a - b; if(c < 0) c += p; return c; }
inline ll mul(ll a, ll b, ll p = mod){ return (a * 1ll * b) % p; }
 
using VI = vector<int>;
using PII = pair<int, int>;
using PLL = pair<ll, ll>;
using VLL = vector<ll>;
using ld = long double;
int gcd(int a, int b)
{
    if (b == 0)
        return a;
    return gcd(b, a % b);
      
}
ll power(ll x, ll y, ll p)
{
    ll res = 1;     // Initialize result
  
    x = x % p; // Update x if it is more than or
                // equal to p
  
    while (y > 0)
    {
        // If y is odd, multiply x with result
        if (y & 1)
            res = (res*x) % p;
  
        // y must be even now
        y = y>>1; // y = y/2
        x = (x*1ll*x) % p;
    }
    return res;
}
const int MX = 2e5+10;
const int MX2 = 1e6+5;

ll INF= 4 * (ll)1e18;
int mx = 2 * (ll)1e9 + 10;
set<ll> Sx[MX];
set<ll> Sy[MX];
int ans[MX];
vector<int> g[MX];
int main() {

    ios_base::sync_with_stdio(false);
    cin.tie(0);cout.tie(0); // insert code here...
    
    int X,Y,A,B,C;
    cin >> X >> Y >> A >> B >> C;

    vector<int> a(A);
    vector<int> b(B);
    vector<int> c(C);
    REP(i,A) cin >> a[i];
    REP(i,B) cin >> b[i];
    REP(i,C) cin >> c[i];
    sort(a.begin(),a.end(),greater<>());
    sort(b.begin(),b.end(),greater<>());
    sort(c.begin(),c.end(),greater<>());

    int i = X - 1;
    int j = Y - 1;
    int k = 0;
    int cnt = 0;
    ll ans = 0;
    REP(i,X) ans = ans + 1ll * a[i];
    REP(i,Y) ans = ans + 1ll * b[i];
    while (i >= 0 && j >= 0 && k < C) {
        if (c[k] <= min(a[i],b[j])) {
            break;
        }
        if (a[i] <= b[j]) {
            if (c[k] >= a[i]) {
                ans = ans - 1ll * a[i];
                ans = ans + 1ll *c[k];
                k++;
                i--;
            }
        }
        else {
            if (c[k] >= b[j]) {
                ans = ans - 1ll * b[j];
                ans = ans + 1ll *c[k];
                k++;
                j--;
            }

        }
    }
    while (i >= 0&&k < C) {
        if (c[k] >= a[i]) {
            ans = ans - 1ll * a[i];
            ans = ans + 1ll *c[k];
            k++;
            i--;
        }
        else
            break;
    }
    while (j >= 0 && k < C) {
        if (c[k] >= b[j]) {
                       ans = ans - 1ll * b[j];
                       ans = ans + 1ll *c[k];
                       k++;
                       j--;
        }
        else
            break;
        
    }
    cout <<ans << endl;
    return 0;
    
}


Measured memory_bytes: 25600