#include <bits/stdc++.h>
#include <boost/range/irange.hpp>
#include <boost/range/algorithm.hpp>
#include <boost/range/algorithm_ext.hpp>
#include <boost/math/common_factor_rt.hpp>
using namespace std;
using namespace boost::range;
using boost::irange;
using boost::math::gcd;
using boost::math::lcm;

using ll = int64_t;
constexpr char LN = '\n';
template<class T> bool chmax(T& a, const T& b) {if(a<b){a=b;return true;}else{return false;}}
template<class T> bool chmin(T& a, const T& b) {if(b<a){a=b;return true;}else{return false;}}

#ifdef LOCAL
template<class H> void dump_(const char* s, H h) {cout<<s<<"="<<h<<LN; }
template<class H, class... T> void dump_(const char* s, H h, T... t) {for(;*s!=',';++s){cout<<*s;}cout<<"="<<h<<",";dump_(++s,t...);}
#define dump(...) dump_(#__VA_ARGS__, __VA_ARGS__)
#else
#define dump(...)
#endif

struct init_ {init_(){cin.tie(nullptr);ios::sync_with_stdio(false);}} init_;

template<class C> C scan(size_t n) {C c(n);for(auto& v:c){cin>>v;}return c;}
template<class C> C scan(size_t n, size_t m) {C vss(n);for(auto& vs:vss){vs.resize(m);for(auto& v:vs){cin>>v;}}return vss;}

template<class R> struct Joined { const R& r; const char* s; };
template<class R> Joined<R> joined(const R& r, const char* s = " ") {return{r,s};}
template<class R> ostream& operator<<(ostream& out, Joined<R> j) {bool f=true;for(const auto& v:j.r){if(f){f=false;}else{out<<j.s;}out<<v;}return out;}

template<class T> using matrix = vector<vector<T>>;
template<class T> matrix<T> make_matrix(size_t n, size_t m, const T& init = T()) {matrix<T> vss(n);for(auto& vs:vss){vs.resize(m,init);}return vss;}
template<class T> ostream& operator<<(ostream& out, Joined<matrix<T>> j) {bool a=true;for(const auto& vs:j.r){if(a){a=false;}else{out<<LN;}bool f=true;for(const auto& v:vs){if(f){f=false;}else{out<<j.s;}out << v;}}return out;}

template<class T> void show_(const T& t) {cout<<t;}
template<class T> void show_(const vector<T>& v) {cout<<joined(v);}
void show_(bool b) {cout<<(b?"Yes":"No");}
void show_(double d) {cout<<fixed<<setprecision(12)<<d;}
template<class T, class... TS> void show_(const T& t, TS... ts) {show_(t);cout<<' ';show_(ts...);}
template<class T> void show(const T& t) {show_(t);cout<<LN;}
template<class T, class... TS> void show(const T& t, TS... ts) {show_(t, ts...);cout<<LN;}

constexpr int IS_A = 1;
constexpr int IS_B = 2;
constexpr int IS_C = 3;

int main() {
    ll X, Y, A, B, C;
    cin >> X >> Y >> A >> B >> C;
    multimap<int, int> m;
    for (auto i : irange(0l, A)) {
        int v;
        cin >> v;
        m.emplace(v, IS_A);
    }
    for (auto i : irange(0l, B)) {
        int v;
        cin >> v;
        m.emplace(v, IS_B);
    }
    for (auto i : irange(0l, C)) {
        int v;
        cin >> v;
        m.emplace(v, IS_C);
    }
    ll sum = 0, xs = 0, ys = 0, cs = 0;
    for (auto it = m.rbegin(), end = m.rend(); it != end; ++it) {
        auto p = *it;
        switch (p.second) {
            case IS_A:
                if (xs < X) {
                    xs++;
                    sum += p.first;
                }
                break;
            case IS_B:
                if (ys < Y) {
                    ys++;
                    sum += p.first;
                }
                break;
            case IS_C:
                cs++;
                sum += p.first;
                break;
        }
        dump(p.first, p.second, xs, ys, cs);
        if (xs + ys + cs == X + Y) {
            break;
        }
    }
    show(sum);
}


Measured memory_bytes: 14336