#include <bits/stdc++.h>
using namespace std;
long long a[200020], b[200020], c[200020], d[200020];
int p[200020];
inline bool cmp(const int x, const int y) { return b[x] < b[y]; }
multiset<long long> t;
inline long long getMax(void) { return t.empty() ? 0LL : *t.rbegin(); }
int main(void) {
  long long n;
  int m, k;
  long long x, s;
  int i, j;
  long long o;
  scanf("%I64d %d %d", &n, &m, &k);
  scanf("%I64d %I64d", &x, &s);
  for (i = 0; i < m; i++) scanf("%I64d", &a[i]);
  for (i = 0; i < m; i++) scanf("%I64d", &b[i]);
  for (i = 0; i < k; i++) scanf("%I64d", &c[i]);
  for (i = 0; i < k; i++) scanf("%I64d", &d[i]);
  for (i = 0; i < m; i++) p[i] = i;
  sort(p, p + m, cmp);
  for (j = 0; j < k && d[j] <= s; j++) t.insert(c[j]);
  if (n <= getMax())
    puts("0");
  else {
    for (i = 0, o = (n - getMax()) * x; i < m && b[p[i]] <= s; i++) {
      for (; j && s < b[p[i]] + d[j - 1]; j--) t.erase(t.lower_bound(c[j - 1]));
      o = min(o, (n - getMax()) * a[p[i]]);
    }
    printf("%I64d\n", o);
  }
  return 0;
}
