#pragma comment(linker, "/stack:20000000")
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx")

#include <bits/stdc++.h>
//#include <ext/pb_ds/assoc_container.hpp>

#define se second
#define fi first
#define ss size()
#define pb push_back
#define mp make_pair
#define ins insert
#define ll long long
#define y1 y12313312312
#define endl '\n'
#define gcd __gcd
#define tm tadsadaagsd
#define next nqweqweeqeqe
#define er erase
#define int ll

using namespace std;
//using namespace __gnu_pbds;

//template <typename T> using ordered_set = tree<T, null_type, std::less<T>, rb_tree_tag, tree_order_statistics_node_update>;

const int N = 1e5 + 40, T = 4 * N, logN = (int)log2(N) + 2, inf = 1e9 + 7, sx[4] = {1, -1, 0, 0}, sy[4] = {0, 0, 1, -1};

int n, m, r, l, e, o, z, ts, id, mx, mn = inf, w;
int a[N], b[N], c[N], ida, idb, idc;
vector < int > d;
ll f;

void freop()
{
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
}

void boos()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
}

int bp (int x, int y) {
	if (y == 0) return 1;
	if (y % 2 == 1) return bp(x, y - 1) * x;
	else
    {
		int asd = bp(x, y / 2);
		return asd * asd;
	}
}

main()
{
    int x, y;
    setprecision(9);
    //freop();
    boos();
    cin >> x >> y;
    cin >> n >> m >> w;
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
    }
    for (int i = 0; i < m; i++)
    {
        cin >> b[i];
    }
    for (int i = 0; i < w; i++)
    {
        cin >> c[i];
        d.pb(c[i]);
    }
    sort(a, a + n);
    reverse(a, a + n);
    sort(b, b + m);
    reverse(b, b + m);
    for (int i = 0; i < x; i++)
    {
        d.pb(a[i]);
    }
    for (int i = 0; i < y; i++)
    {
        d.pb(b[i]);
    }
    sort(d.begin(), d.end());
    reverse(d.begin(), d.end());
    for (int i = 0; i < x + y; i++)
    {
        f += d[i];
    }
    /*
    while (x + y > 0)
    {
        //cout << x << " " << y << " " << ida << " " << idb << " " << idc << " " << f << endl;
        if (idc == w)
        {
            if (x)
            {
                x--;
                f += a[ida++];
            }
            if (y)
            {
                y--;
                f += b[idb++];
            }
            continue;
        }
        if (!y)
        {
            if (a[ida] > c[idc])
            {
                x--;
                f += a[ida++];
            }
            else
            {
                x--;
                f += c[idc++];
            }
            continue;
        }
        if (!x)
        {
            if (b[idb] > c[idc])
            {
                y--;
                f += b[idb++];
            }
            else
            {
                y--;
                f += c[idc++];
            }
            continue;
        }
        if (a[ida] >= c[idc])
        {
            x--;
            f += a[ida++];
        }
        else if (b[idb] >= c[idc])
        {
            y--;
            f += b[idb++];
        }
        else if (a[ida] >= b[idb])
        {
            y--;
            f += c[idc++];
        }
        else
        {
            x--;
            f += c[idc++];
        }
        /*
        if ((a[ida] >= c[idc] || idc == w) && x)
        {
            x--;
            f += a[ida++];
        }
        if ((b[idb] >= c[idc] || idc == w) && y)
        {
            y--;
            f += b[idb++];
        }
        if ((c[idc] > a[ida] || !x) && (c[idc] > b[idb] || !y) && idc != w)
        {
            if ((a[ida] < b[idb] || !y) && x)
            {
                x--;
                f += c[idc++];
            }
            else if (y)
            {
                y--;
                f += c[idc++];
            }
        }
    }*/
    cout << f;
}


Measured memory_bytes: 8560