#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <utility>
#include <numeric>
#include <array>
#include <cmath>
#include <memory>
#include <queue>
using namespace std;
#define DEB(variable) cout << #variable << '=' << variable << endl

#define FOR(LoopVariable,numberOFbegin,numberOFend) for (long long int LoopVariable = (numberOFbegin); (LoopVariable) < (numberOFend); (LoopVariable)++)
#define DEFOR(LoopVariable,numberOFbegin,numberOFend) for (long long int LoopVariable = (numberOFbegin)-1; (LoopVariable) >= (numberOFend); (LoopVariable)--)
#define REP(LoopVariable,numberOFend) for(long long int LoopVariable = 0;(LoopVariable)<(numberOFend);LoopVariable++)

using llint = long long int;

constexpr long long int linf = numeric_limits<long long int>::max()-5;
constexpr long long int inf= numeric_limits<int>::max()-5;
constexpr long long int mod = 1000000007;

int main(){

    llint x, y, a, b, c;
    cin >> x >> y >> a >> b >> c;
    vector<llint> va(a), vb(b), vc(c);
    priority_queue<llint> aq, bq, cq;
    REP(i,a){
        cin >> va[i];
        aq.push(va[i]);
    }
    REP(i,b){
        cin >> vb[i];
        bq.push(vb[i]);
    }
    REP(i,c){
        cin >> vc[i];
        cq.push(vc[i]);
    }
    sort(va.begin(), va.end(), greater<llint>());
    sort(vb.begin(), vb.end(), greater<llint>());
    sort(vc.begin(), vc.end(), greater<llint>());
    llint atea = 0, ateb = 0, atec = 0, result = 0;

    while(atea+ateb+atec!=x+y){
        if(atea>=x){
            if(bq.top()>=cq.top()){
                result += bq.top();
                ateb++;
                bq.pop();
            }else{
                result += cq.top();
                atec++;
                cq.pop();
            }
        }else if(ateb>=y){
            if(aq.top()>=cq.top()){
                result += aq.top();
                atea++;
                aq.pop();
            }else{
                result += cq.top();
                atec++;
                cq.pop();
            }
        }else{
            if(cq.top()>=bq.top()&&cq.top()>=aq.top()&&!cq.empty()){
                result += cq.top();
                atec++;
                cq.pop();
            }else if(aq.top()>=bq.top()){
                result += aq.top();
                atea++;
                aq.pop();
            }else if(bq.top()>aq.top()){
                result += bq.top();
                ateb++;
                bq.pop();
            }else{
                REP(i,100000){
                    if(ateb+i==y){
                        result += aq.top();
                        atea++;
                        aq.pop();
                        goto END;
                    }else if(atea+i==x){
                        result += bq.top();
                        ateb++;
                        bq.pop();
                        goto END;
                    }else if(va[atea+i]>vb[ateb+i]){
                        result += aq.top();
                        atea++;
                        aq.pop();
                        goto END;
                    }else if(vb[ateb+i]>va[atea+i]){
                        result += bq.top();
                        ateb++;
                        bq.pop();
                        goto END;
                    }
                }
                if(x>y){
                    result += aq.top();
                    atea++;
                }else{
                    result += bq.top();
                    ateb++;
                    
                }
                aq.pop();
            END:;
            }
        }
    }
    cout<<result<<endl;
    return 0;
}


Measured memory_bytes: 5748