#include <stdio.h>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>
#include <list>
#include <queue>
#include <stack>
#include <cmath>
#include <ctime>
#include <cstdio>
#include <vector>
#include <string>
#include <bitset>
#include <cctype>
#include <cstdlib>
#include <cstring>
#include <utility>
#include <numeric>
#include <complex>
#include <sstream>
#include <fstream>
#include <iomanip>
#include <cassert>
#include <iostream>
#include <iterator>
#include <algorithm>
#include <functional>
using namespace std;
typedef long long ll;
const double EPS = 1e-9;
typedef vector<int> vint;
typedef vector<vector<int>> v2int;
typedef vector<ll> vll;
typedef vector<vector<ll>> v2ll;
typedef list<int> liint;
typedef pair<int, int> pint;
const int INF = int(2e9);
const ll LINF = ll(2e9) * ll(2e9);
#define rep(i, n) REP(i, 0, n)
#define ALL(v) v.begin(), v.end()
#define MSG(a) cout << #a << " " << a << endl;
#define REP(i, x, n) for(int i = x; i < n; i++)
template<class T, class C> void chmax(T& a, C b) { a > b ? : a = b; }
template<class T, class C> void chmin(T& a, C b) { a < b ? : a = b; }



int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int X, Y, A, B, C;
    cin >> X >> Y >> A >>  B >> C;
    deque<ll> p(A), q(B), r(C);
    rep(i, A) cin >> p[i];
    rep(i, B) cin >> q[i];
    rep(i, C) cin >> r[i];
    sort(p.begin(), p.end(), greater<ll>());
    sort(q.begin(), q.end(), greater<ll>());
    sort(r.begin(), r.end(), greater<ll>());
    ll ans = 0;

    deque<pair<ll, char>> pqr;
    rep(i, A) {
        pqr.push_back(make_pair(p[i], 'p'));
    }
    rep(i, B) {
        pqr.push_back(make_pair(q[i], 'q'));
    }
    rep(i, C) {
        pqr.push_back(make_pair(r[i], 'r'));
    }
    sort(pqr.begin(), pqr.end(), greater<pair<ll, char>>());
    int i = 0;
    int p_used_num = 0;
    int q_used_num = 0;
    while (i < X + Y) {
        auto x = pqr.front();
        pqr.pop_front();
        if (x.second == 'r') {
            ans += x.first;
            i++;
        }
        else if (x.second == 'p' && p_used_num < X) {
            ans += x.first;
            i++;
            p_used_num++;
        }
        else if (x.second == 'q' && q_used_num < Y) {
            ans += x.first;
            i++;
            q_used_num++;
        }

    }

    //rep(i, X + Y) {
    //    if (r.size() > 0 && 
    //        (p_used_num >= X || r[0] >= p[0]) &&
    //        (q_used_num >= Y || r[0] >= q[0])) {
    //        ans += r[0];
    //        r.pop_front();
    //    }
    //    else if (p_used_num < X && p.size() > 0 &&
    //            (r.size() <= 0 || p[0] > r[0]) && 
    //            (q_used_num >= Y || q.size() <= 0 || p[0] > q[0])) {
    //        ans += p[0];
    //        p.pop_front();
    //        p_used_num++;
    //    }
    //    else if (q_used_num < Y && q.size() > 0 &&
    //            (r.size() <= 0 || q[0] > r[0]) &&
    //            (p_used_num >= X || p.size() <= 0 || q[0] > p[0])) {
    //        ans += q[0];
    //        q.pop_front();
    //        q_used_num++;
    //    }
    //    else {
    //        ans += r[0];
    //        r.pop_front();
    //    }
    //}
    cout << ans << endl;
    return 0;
}

Measured memory_bytes: 7680