//#include "pch.h"
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>

#include <vector>
#include <set>
#include <map>
#include <iostream>
#include <utility>
#include <queue>
#include <algorithm>
#include <functional>
#include <string>
#include <bitset>

#define ll long long
#define fri(n) for(i=0;i<(n);i++)
#define frj(n) for(j=0;j<(n);i++)
#define min(p,q) ((p)<(q)?(p):(q))
#define max(p,q) ((p)>(q)?(p):(q))
#define INF 1000000000000000000//10^18
#define INFINT 2000000001//2*10^9+1
#define MOD 1000000007
#define MODANOTHER 998244353
#define PI acos(-1)

#define int long long

using namespace std;

int compare_ll(const void *a, const void *b)
{
	ll *A = (ll *)a;
	ll *B = (ll *)b;
	if (*A < *B) return 1;
	if (*A > *B) return -1;
	return 0;
}

signed main(void)
{
	//変数の宣言
	int n,m;
	int h,w;
	int x,y,a,b,c;
	static int p[100010];
	static int q[100010];
	static int r[100010];

	//よく使う変数
	int i,j,k,l;
	int flag=0;
	int ans=0;
	int count=0;
	int temp=0;
	int temp1=0;
	int temp2=0;
	int temp3=0;
	static int vec[1010];
	int max=0;
	int min=INFINT;
	int len=0;
	int sum=0;
	int ok=0;
	int ng=0;
	char dummy;
	static char stemp[100010];
	
	//データの読み込み


	scanf("%lld %lld %lld %lld %lld",&x,&y,&a,&b,&c);
//	scanf_s("%lld %lld %lld %lld %lld",&x,&y,&a,&b,&c);


//	scanf("%s",&s);
//	scanf_s("%s",&s,20);


/*	//scanf("%c",&dummy);
	scanf_s("%c",&dummy);
	for(i=0;i<n;i++){
//		scanf("%c",&s[i]);
		scanf_s("%c",&s[i]);
	}*/


	for(i=0;i<a;i++){
		scanf("%lld",&p[i]);
//		scanf_s("%lld",&p[i]);
	}
	for(i=0;i<b;i++){
		scanf("%lld",&q[i]);
//		scanf_s("%lld",&q[i]);
	}
	for(i=0;i<c;i++){
		scanf("%lld",&r[i]);
//		scanf_s("%lld",&r[i]);
	}


	//	printf("nは%dです\n", n);
	//	printf("データの読み込み終了\n");
	//実際の処理

//	clock_t start=clock();

	qsort(p, a, sizeof(ll), [](const void* a, const void* b)
	{
		int arg1 = *static_cast<const int*>(a);
		int arg2 = *static_cast<const int*>(b);

		if(arg1 < arg2) return 1;
		if(arg1 > arg2) return -1;
		return 0;

		//  return (arg1 > arg2) - (arg1 < arg2); // possible shortcut
		//  return arg1 - arg2; // erroneous shortcut (fails if INT_MIN is present)
	});
	qsort(q, b, sizeof(ll), [](const void* a, const void* b)
	{
		int arg1 = *static_cast<const int*>(a);
		int arg2 = *static_cast<const int*>(b);

		if(arg1 < arg2) return 1;
		if(arg1 > arg2) return -1;
		return 0;

		//  return (arg1 > arg2) - (arg1 < arg2); // possible shortcut
		//  return arg1 - arg2; // erroneous shortcut (fails if INT_MIN is present)
	});
	qsort(r, c, sizeof(ll), [](const void* a, const void* b)
	{
		int arg1 = *static_cast<const int*>(a);
		int arg2 = *static_cast<const int*>(b);

		if(arg1 < arg2) return 1;
		if(arg2 > arg1) return -1;
		return 0;

		//  return (arg1 > arg2) - (arg1 < arg2); // possible shortcut
		//  return arg1 - arg2; // erroneous shortcut (fails if INT_MIN is present)
	});
	
	//qsort(q, b, sizeof(ll), compare_ll);
	//qsort(r, c, sizeof(ll), compare_ll);

	/*for(i=0;i<a;i++){
		printf("%d ",p[i]);
	}
	printf("\n");
	for(i=0;i<b;i++){
		printf("%d ",q[i]);
	}
	printf("\n");
	for(i=0;i<c;i++){
		printf("%d ",r[i]);
	}
	printf("\n");*/


	static int normal[200010];
	normal[0]=0;

	for(i=1;i<=c;i++){
		normal[i]=normal[i-1]+r[i-1];
	}
	
	temp1=max(x-c,0);
	temp2=max(y-c,0);

	for(i=0;i<temp1;i++){
		ans=ans+p[i];
	}
	for(i=0;i<temp2;i++){
		ans=ans+q[i];
	}

	temp=x+y-temp1-temp2;
	static int color[200010];
	color[0]=0;
	for(i=1;i<=temp;i++){
		if(temp2==y||(temp1<x&&p[temp1]>q[temp2])){
			color[i]=color[i-1]+p[temp1];
			temp1++;
		}else{
			color[i]=color[i-1]+q[temp2];
			temp2++;
		}
	}

	int ans2=0;
	c=min(temp,c);
	for(i=0;i<=c;i++){
		ans2=max(ans2,normal[i]+color[temp-i]);
	}

	printf("%lld",ans+ans2);

	/*printf("\n");
	for(i=0;i<=c;i++){
		printf("normal[%lld]=%lld\n",i,normal[i]);
	}

	for(i=0;i<=temp;i++){
		printf("color[%lld]=%lld\n",i,color[i]);
	}*/
	//printf("ans=%lld",ans);
	

//	clock_t end=clock();

	//	printf("計算部分終了\n");

	//出力
	
	//printf("%d",(d[i-1][j-1]+1)/2);

//	printf("time=%lf",(double)(end-start)/CLOCKS_PER_SEC);
	//	printf("結果の出力終了\n");

	return 0;
}



Measured memory_bytes: 6380