#include <bits/stdc++.h>
using namespace std;
struct spell {
  long long s;
  long long m;
};
bool bymana(const spell &s1, const spell &s2) { return s1.m < s2.m; }
int main() {
  long long n, numt1, numt2, tpot, mana;
  cin >> n >> numt1 >> numt2 >> tpot >> mana;
  vector<spell> s1(numt1);
  vector<spell> s2(numt2);
  long long mintime = n * tpot;
  for (int i = 0; i < numt1; ++i) {
    cin >> s1[i].s;
  }
  for (int i = 0; i < numt1; ++i) {
    cin >> s1[i].m;
  }
  sort(s1.begin(), s1.begin() + numt1, bymana);
  for (int i = 0; i < numt2; ++i) {
    cin >> s2[i].s;
  }
  for (int i = 0; i < numt2; ++i) {
    cin >> s2[i].m;
  }
  if (s1[0].m <= mana) mintime = min(s1[0].s * n, mintime);
  for (int i = 1; i < numt1; ++i) {
    s1[i].s = min(s1[i - 1].s, s1[i].s);
    if (s1[i].m <= mana) mintime = min(s1[i].s * n, mintime);
  }
  long long i = numt1 - 1;
  for (int j = 0; j < numt2; ++j) {
    while ((i >= 0) && (s1[i].m + s2[j].m > mana)) --i;
    if (i >= 0)
      mintime = min((n - s2[j].s) * s1[i].s, mintime);
    else if (s2[j].m <= mana)
      mintime = min((n - s2[j].s) * tpot, mintime);
  }
  cout << mintime << endl;
}
