#include <bits/stdc++.h>
using namespace std;
vector<long long> a, b, c, d;
int main(int argc, char const *argv[]) {
  int n, m, k;
  while (cin >> n >> m >> k) {
    a.clear();
    b.clear();
    c.clear();
    d.clear();
    long long x, s;
    cin >> x >> s;
    for (int i = 1; i <= m; i++) {
      long long temp;
      cin >> temp;
      a.push_back(temp);
    }
    for (int i = 1; i <= m; i++) {
      long long temp;
      cin >> temp;
      b.push_back(temp);
    }
    for (int i = 1; i <= k; i++) {
      long long temp;
      cin >> temp;
      c.push_back(temp);
    }
    for (int i = 1; i <= k; i++) {
      long long temp;
      cin >> temp;
      d.push_back(temp);
    }
    long long minSec = n * x;
    vector<long long>::iterator mx = upper_bound(d.begin(), d.end(), s);
    mx--;
    if (mx - d.begin() >= 0 && mx - d.begin() < k)
      minSec =
          (minSec < x * (n - c[mx - d.begin()]) ? minSec
                                                : x * (n - c[mx - d.begin()]));
    for (int i = 0; i <= m - 1; i++) {
      if (s >= b[i]) {
        long long tx = a[i];
        long long ts = s - b[i];
        minSec = (minSec < n * tx ? minSec : n * tx);
        mx = upper_bound(d.begin(), d.end(), ts);
        mx--;
        if (mx - d.begin() >= 0 && mx - d.begin() < k)
          minSec = (minSec < tx * (n - c[mx - d.begin()])
                        ? minSec
                        : tx * (n - c[mx - d.begin()]));
      }
    }
    cout << minSec << endl;
  }
  return 0;
}
