#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3F3F3F3F;
const int NEGINF = 0xC0C0C0C0;
const double EPS = 1e-8;
int cmp_double(double a, double b, double eps = 1e-9) {
  return a + eps > b ? b + eps > a ? 0 : 1 : -1;
}
inline void scanint(int &x) {
  register int c = getchar();
  x = 0;
  int neg = 0;
  for (; ((c < 48 || c > 57) && c != '-'); c = getchar())
    ;
  if (c == '-') {
    neg = 1;
    c = getchar();
  }
  for (; c > 47 && c < 58; c = getchar()) {
    x = (x << 1) + (x << 3) + c - 48;
  }
  if (neg) x = -x;
}
int main() {
  int N, P1, P2;
  cin >> N >> P1 >> P2;
  int S, M;
  cin >> S >> M;
  vector<int> sp1(P1), sp2(P2);
  vector<int> cost1(P1), cost2(P2);
  for (int i = 0; i < P1; i++) {
    scanf(" %d", &sp1[i]);
  }
  for (int i = 0; i < P1; i++) {
    scanf(" %d", &cost1[i]);
  }
  for (int i = 0; i < P2; i++) {
    scanf(" %d", &sp2[i]);
  }
  for (int i = 0; i < P2; i++) {
    scanf(" %d", &cost2[i]);
  }
  long long ans = (long long)N * (long long)S;
  for (int i = 0; i < P1; i++) {
    int mana = M;
    if (mana < cost1[i]) continue;
    mana -= cost1[i];
    int new_sec = sp1[i];
    std::vector<int>::iterator it;
    it = std::upper_bound(cost2.begin(), cost2.end(), mana);
    if (it != cost2.begin()) it--;
    int pos = (int)(it - cost2.begin());
    int make = 0;
    if (mana >= cost2[pos]) {
      make = sp2[pos];
    }
    int need = N - make;
    if (need <= 0) {
      ans = 0;
      break;
    } else {
      ans = min(ans, (long long)new_sec * (long long)need);
    }
  }
  std::vector<int>::iterator it;
  it = std::upper_bound(cost2.begin(), cost2.end(), M);
  if (it != cost2.begin()) it--;
  int pos = (int)(it - cost2.begin());
  int make = 0;
  if (M >= cost2[pos]) {
    make = sp2[pos];
  }
  int need = N - make;
  if (need <= 0) {
    ans = 0;
  } else {
    ans = min((long long)S * (long long)need, ans);
  }
  cout << ans << endl;
  return 0;
}
