// Problem : E - Red and Green Apples
// Contest : AtCoder Beginner Contest 160
// URL : https://atcoder.jp/contests/abc160/tasks/abc160_e
// Memory Limit : 1024 MB
// Time Limit : 2000 ms
// Powered by CP Editor (https://github.com/cpeditor/cpeditor)

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

typedef long long   ll;
const ll mod = 1e9 + 7;

#define speedup_IO      ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define forn(i,a,n)     for(ll i = a; i < n; i++)
#define ford(i,n,a)     for(ll i = n; i >= a; i--)
#define pb              push_back
#define lb              lower_bound
#define ub              upper_bound
#define pll             pair<ll,ll>
#define all(a)          (a).begin(),(a).end()
#define reset(a,x)      memset(a,x,sizeof(a))

ll mypow(ll base, ll exp) {ll res = 1; while (exp) {if (exp & 1) res = (res * base) % mod; exp >>= 1, base = (base * base) % mod;} return res;}
ll gcd(ll a, ll b)  { return b ? gcd(b, a % b) : a;            }
ll mult(ll a, ll b) { if (a < 0) {a += mod;} if (b < 0) {b += mod;} return ((a % mod) * (b % mod)) % mod; }
ll add(ll a, ll b)  { if (a < 0) {a += mod;} if (b < 0) {b += mod;} return (a % mod + b % mod) % mod;        }
ll sub(ll a, ll b)  { if (a < 0) {a += mod;} if (b < 0) {b += mod;} return (a % mod + mod - b % mod) % mod;  }

#define dbg(args...) { string _s = #args; replace(_s.begin(), _s.end(), ',', ' '); stringstream _ss(_s); istream_iterator<string> _it(_ss); err(_it, args); }

void err(istream_iterator<string> it) {}
template<typename T, typename... Args>
void err(istream_iterator<string> it, T a, Args... args) {
	cerr << *it << " = " << a << " | ";
	err(++it, args...);
}

const ll inf = 1e18;
const int nax = 1e5 + 5;

int main()
{
	speedup_IO;

	int t = 1;
	//cin >> t;
	while (t--)
	{
		ll x,y,a,b,c;
		cin>>x>>y>>a>>b>>c;
		
		vector<ll> p(a),q(b),r(c);
		forn(i,0,a)
		{
			cin>>p[i];
		}
		forn(i,0,b)
		{
			cin>>q[i];
		}
		forn(i,0,c)
		{
			cin>>r[i];
		}
		
		ll ans = 0;
		
		sort(all(p));
		sort(all(q));
		sort(all(r));
		reverse(all(p)), reverse(all(q)), reverse(all(r));
		ll pre1[a],pre2[b],pre3[c];
		reset(pre1,0);
		reset(pre2,0);
		reset(pre3,0);
		
		forn(i,0,a)
		{
			if(i == 0)
			{
				pre1[i] = p[i];
			}
			else
			{
				pre1[i] = pre1[i-1] + p[i];
			}
		}
		forn(i,0,b)
		{
			if(i == 0)
			{
				pre2[i] = q[i];
			}
			else
			{
				pre2[i] = pre2[i-1] + q[i];
			}
		}
		forn(i,0,c)
		{
			if(i == 0)
			{
				pre3[i] = r[i];
			}
			else
			{
				pre3[i] = pre3[i-1] + r[i];
			}
		}
		reverse(all(p)), reverse(all(q)), reverse(all(r));
		
		multiset<ll>s1,s2;
		forn(i,0,b)
		{
			s1.insert(q[i]);
		}
		forn(i,0,c)
		{
			s1.insert(r[i]);
		}
		
		ll cnt = 0;
		auto itr = s1.begin();
		auto itr_next = s1.begin();
		
		for(;itr!=s1.end();itr = itr_next)
		{
			if(cnt < (b+c-y))
			{
				itr_next = ++itr;
				ll xx = *(--itr);
				s1.erase(itr);
				s2.insert(xx);
			}
			else
			{
				break;
			}
			cnt++;
		}
		
		ll sum1 = 0;
		for(auto xx:s1)
		{
			sum1 += xx;
		}
		
		ans = max(ans,sum1+pre1[x-1]);
		
		forn(i,1,min(c,x-1)+1)
		{
			if(s1.size() && s2.size())
			{
				if(s1.find(r[c-i]) != s1.end())
				{
					sum1 -= r[c-i];
					s1.erase(s1.find(r[c-i]));	
					s1.insert(*(s2.rbegin()));
					sum1 += *(s2.rbegin());
					
					s2.erase(--s2.end());
					ans = max(ans,sum1+pre1[x-1-i]+pre3[i-1]);
				}
				
				else
				{
					s2.erase(s2.find(r[c-i]));
					ans = max(ans,sum1+pre1[x-1-i]+pre3[i-1]);
				}
			}
		}
		
		if(x<=c)
		{
			if(s1.size() && s2.size())
			{
				if(s1.find(r[c-x]) != s1.end())
				{
					sum1 -= r[c-x];
					s1.erase(s1.find(r[c-x]));	
					s1.insert(*(s2.rbegin()));
					sum1 += *(s2.rbegin());
					
					s2.erase(--s2.end());
					ans = max(ans,sum1+pre3[x-1]);
				}
				
				else
				{
					s2.erase(s2.find(r[c-x]));
					ans = max(ans,sum1+pre3[x-1]);
				}
			}
		}
		
		
		cout<<ans;
		
	}

	return 0;
}


Measured memory_bytes: 14336