#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#define mann 150000
long long D(){
long long k=5;
for(int i=1;i<=30;i++)k*=10;
return k;
}
using namespace std;
long long ans=D();
long long C,A,B,n,m;
struct SABER{
long long q,h,c;//q为老师前缀和,h为老师后缀和,c为学生的前缀和
}a[mann];
long long student[mann],exam[mann];
long long q,maxa,maxb,mina=mann;
long long need,rest,CC;
long long pd(long long k1,long long k2,long long k3){
if(A<B){
if(k1==k2){return k3*C+k1*A;}
if(k1>k2){return k3*C+k2*A+(k1-k2)*B;}
else{return A*k1+C*k3;}
}
else {return k1*B+k3*C;}
}
int main(){
cin>>A>>B>>C>>n>>m;
for(int i=1;i<=n;i++){cin>>q;student[q]++;maxa=max(maxa,q);mina=min(mina,q);}
for(int i=1;i<=m;i++){cin>>q;exam[q]++;maxb=max(maxb,q);}
for(int i=1;i<=maxa;i++){a[i].c=a[i-1].c+student[i];}
for(int i=1;i<=maxb;i++)a[i].q=a[i-1].q+exam[i];
for(int i=maxb;i>=mina;i--){a[i].h=a[i+1].h+exam[i];need+=a[i].h;}
for(int i=1;i<mina;i++){rest+=a[i].q;}
for(int i=mina;i<=maxb;i++){
need-=a[i].h;
ans=min(ans,pd(need,rest,CC));
rest+=a[i].q;
CC+=a[i].c;
if(C>1e7+1)i=mann;
}
cout<<ans;
return 0;
}