#include <bits/stdc++.h>
#pragma comment(linker, "/stack:640000000")
using namespace std;
const double EPS = 1e-9;
const int INF = 0x7f7f7f7f;
const double PI = acos(-1.0);
template <class T>
inline T gcd(T a, T b) {
  return (b) == 0 ? (a) : gcd((b), ((a) % (b)));
}
template <class T>
inline T lcm(T a, T b) {
  return ((a) / gcd((a), (b)) * (b));
}
template <typename T>
string NumberToString(T Number) {
  ostringstream second;
  second << Number;
  return second.str();
}
struct debugger {
  template <typename T>
  debugger& operator,(const T& v) {
    cerr << v << " ";
    return *this;
  }
} dbg;
int t, n, m;
vector<int> firsttime, firstmana, scndtime, scndmana;
int binary(int lft) {
  int ans = -1;
  int low = 0, high = scndmana.size() - 1;
  while (low <= high) {
    int mid = (low + high) / 2;
    if (scndmana[mid] <= lft) {
      ans = mid;
      low = mid + 1;
    } else
      high = mid - 1;
  }
  return ans;
}
int main() {
  while (~scanf("%d", &n)) {
    int k;
    scanf("%d%d", &m, &k);
    int tme, mana;
    scanf("%d%d", &tme, &mana);
    firstmana.clear();
    firsttime.clear();
    scndmana.clear();
    scndtime.clear();
    for (int i = 1; i <= (m); i++) {
      int tmp;
      scanf("%d", &tmp);
      firsttime.push_back(tmp);
    }
    for (int i = 1; i <= (m); i++) {
      int tmp;
      scanf("%d", &tmp);
      firstmana.push_back(tmp);
    }
    for (int i = 1; i <= (k); i++) {
      int tmp;
      scanf("%d", &tmp);
      scndtime.push_back(tmp);
    }
    for (int i = 1; i <= (k); i++) {
      int tmp;
      scanf("%d", &tmp);
      scndmana.push_back(tmp);
    }
    long long ans = LONG_LONG_MAX;
    ans = (long long)n * tme;
    for (int i = 0; i < (m); i++) {
      if (firstmana[i] > mana) continue;
      int tt = firsttime[i];
      int lft = mana - firstmana[i];
      int indx = binary(lft);
      if (indx == -1) {
        ans = min(ans, (long long)tt * n);
      } else {
        int vua = max(0, n - scndtime[indx]);
        ans = min(ans, (long long)tt * vua);
      }
    }
    for (int i = 0; i < (k); i++) {
      if (scndmana[i] > mana) break;
      int vua = max(0, n - scndtime[i]);
      ans = min(ans, (long long)tme * vua);
    }
    printf("%lld\n", ans);
  }
  return 0;
}
