#include <bits/stdc++.h>
using namespace std;
inline bool check_diags(int x0, int y0, int x, int y) {
  return abs(x0 - x) == abs(y0 - y);
}
inline bool check_lines(int x0, int y0, int x, int y) {
  return x - x0 == 0 || y - y0 == 0;
}
vector<int> a, b, c, d;
int n, x, s, m, k;
void read() {
  for (int i = 0; i < m; ++i) {
    int t;
    scanf(" %d", &t);
    a.push_back(t);
  }
  for (int i = 0; i < m; ++i) {
    int t;
    scanf(" %d", &t);
    b.push_back(t);
  }
  a.push_back(x);
  b.push_back(0);
  c.push_back(0);
  d.push_back(0);
  for (int i = 0; i < k; ++i) {
    int t;
    scanf(" %d", &t);
    c.push_back(t);
  }
  for (int i = 0; i < k; ++i) {
    int t;
    scanf(" %d", &t);
    d.push_back(t);
  }
}
int main() {
  scanf("%d %d %d %d %d", &n, &m, &k, &x, &s);
  read();
  int64_t ans = numeric_limits<int64_t>::max();
  for (int i = 0; i < m + 1; ++i) {
    int avail = s - b[i];
    if (avail < 0) continue;
    auto pos = upper_bound(d.begin(), d.end(), avail);
    if (pos != d.begin()) {
      int j = distance(d.begin(), pos - 1);
      int64_t val = ((int64_t)a[i]) * (n - c[j]);
      ans = min(ans, val);
    }
  }
  printf("%lld\n", ans);
  return EXIT_SUCCESS;
}
