#include<bits/stdc++.h>
using namespace std;
const int N = 100010;
typedef long long LL;
int n , m , t[N] , b[N];
LL A , B , C , ans;
LL calc1(int p)
{
LL x = 0 , y = 0;
for(int i = 1 ; i<= m ; i ++){
if(b[i] < p) x += p - b[i];
else y += b[i] - p;
}
if(A < B) return min(x , y) * A + (y - min(x , y)) * B;
else return y * B;
}
LL calc2(int p)
{
LL sum = 0;
for(int i = 1 ; i <= n ; i ++)
if(t[i] < p)
sum += (p - t[i]) * C;
return sum;
}
template <typename T>
T read() {
T sum = 0, fl = 1;
int ch = getchar();
for (; !isdigit(ch); ch = getchar())
if (ch == '-') fl = -1;
for (; isdigit(ch); ch = getchar()) sum = sum * 10 + ch - '0';
return sum * fl;
}
int main()
{
A = read<LL>(); B = read<LL>(); C = read<LL>(); n = read<LL>();m = read<LL>();
for(int i = 1 ; i<= n ; i ++) t[i] = read<LL>();
for(int i = 1 ; i <= m ; i ++) b[i] = read<LL>();
sort(b + 1 , b + m + 1); sort(t + 1 , t + n + 1);
if(C >= 1e16){
cout << calc1(t[1]); return 0;
}
ans = 1e16;
int l = 1 , r = N;
while(r - l > 2)
{
int mid1 = l + (r - l) / 3; int mid2 = r - (r - l) / 3;
LL c1 = calc1(mid1) + calc2(mid2);
LL c2 = calc1(mid2) + calc2(mid1);
if(c1 <= c2) r = mid2;
else l = mid1;
}
for(int i = 1 ; i <= r ; i ++)
{
LL x = calc1(i) + calc2(i);
ans = min(ans , x);
}
printf("%lld" , ans);
return 0;
}