// <------------- Template -----------------------> //

/*
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimization("unroll-loops")
*/

#pragma optimization_level 3   									//Comment optimisations for an interatcive problem - use endl
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math,O3")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")

#include<bits/stdc++.h>
using namespace std;

#define fastio 			ios::sync_with_stdio(0);	cin.tie(0); cout.tie(0);  cout<<fixed;  cout<<setprecision(12);
#define randomINT 		mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
#define	newl 			cout<<"\n"
#define DISP(as)		for(auto it : as) cout<<it<<" ";newl;
#define all(x)         	(x).rbegin(),(x).rend()
#define mset(x,val)    	memset(x,val,sizeof(x))
#define newl           	cout<<"\n"
#define pb             	push_back
#define mp             	make_pair
#define f 				first
#define s 				second
#define dline          cerr<<"///REACHED///\n";
#define deb1(x)        cerr<<#x<<" = "<<x<<'\n';
#define deb2(x,y)      cerr<<'['<<#x<<','<<#y<<"] = "<<'['<<x<<','<<y<<']'<<'\n';
#define deb3(x,y,z)    cerr<<'['<<#x<<','<<#y<<','<<#z<<"] = "<<'['<<x<<','<<y<<','<<z<<']'<<'\n';

typedef long long 				ll;
typedef long double 			ld;
typedef vector<ll> 				vll;
typedef pair<ll , ll> 			pll;
typedef pair<ld, ld> 			pld;
typedef unordered_map<ll, ll> 	um;
typedef vector<pll> 			vpll;

const ll 	MAX5 	= 	1e+5 + 7;
const ll 	MAX7 	= 	1e+7 + 7;
const ll 	MAXN 	= 	MAX7;
const ll   	INF   	=  	0x7f7f7f7f7f7f7f7f;
const int  	INFi 	=  	0x7f7f7f7f;
const ll 	MOD		=  	1e+9 + 7;

vll adj[MAXN]; ll visit[MAXN] = {};
int dx8[] = {0, 1, 1, 1, 0, -1, -1, -1}, dy8[] = {1, 1, 0, -1, -1, -1, 0, 1};
int dx4[] = {0, 1, 0, -1}, dy4[] = {1, 0, -1, 0};

// <------------- Declare Variables Here ------------> //

ll t = 1;
ll n, x, m, a, y, b, k, c;
string s;
vpll v;
vll R, G, Rsum, Gsum;
// <------------- Implement Functions Here ----------> //

ll red = 0, green = 1, cless = 2;

// <------------- Start of main() -------------------> //

void MAIN() {
	cin >> x >> y >> a >> b >> c;
	Rsum.pb(0);
	Gsum.pb(0);
	for (ll i = 0; i < a; i++) {
		cin >> m;
		R.pb(m);
		Rsum.pb(m);
		v.pb(mp(m, red));
	}
	for (ll i = 0; i < b; i++) {
		cin >> m;
		G.pb(m);
		Gsum.pb(m);
		v.pb(mp(m, green));
	}
	for (ll i = 0; i < c; i++) {
		cin >> m;
		v.pb(mp(m, cless));
	}
	sort(all(v));
	sort(all(R));
	sort(all(G));
	sort(all(Gsum));
	sort(all(Rsum));
	for (ll i = 1; i <= a; i++) Rsum[i] += Rsum[i - 1];
	for (ll i = 1; i <= b; i++) Gsum[i] += Gsum[i - 1];
	//for(ll i=0;i<v.size();i++) cout<<v[i].f<<" ";newl;
	//DISP(R);DISP(G);
	ll i = 0, j = 0, k = 0, sum = 0, tot = x + y;
	while (tot && x && y) {
		if (v[i].s == green) {
			y--;

			sum += v[i].f;
			i++;
			k++;
		}
		else if (v[i].s == red) {
			x--;
			sum += v[i].f;
			i++;
			j++;
		}
		else {
			sum += v[i].f;
			i++;
		}
		tot--;
	}

	while (x && tot) {
		if (v[i].s == green) {
			i++;
			continue;
		}

		sum += v[i].f;
		x--;
		tot--;
		i++;
	}

	while (y && tot) {
		if (v[i].s == red) {
			i++; 
			continue;
		}
		sum += v[i].f;
		y--;
		tot--;
		i++;
	}

	cout << sum; newl;
}

int main() {
	fastio; randomINT;
	//cin>>t;
	while (t--) {
		MAIN();
	}
	return 0;
}


Measured memory_bytes: 249560