#include <bits/stdc++.h>
using namespace std;
long long sec[200005], p1[200005], p2[200005], ave[200005];
int main() {
  long long n, m, k;
  cin >> n >> m >> k;
  long long x, s;
  cin >> x >> s;
  vector<pair<long long, int>> tp1(m);
  for (int i = 0; i < m; i++) {
    long long t;
    cin >> t;
    sec[i] = t;
  }
  for (int i = 0; i < m; i++) {
    long long t;
    cin >> t;
    p1[i] = t;
    tp1[i] = make_pair(t, i);
  }
  for (int i = 0; i < k; i++) {
    long long t;
    cin >> t;
    ave[i] = t;
  }
  for (int i = 0; i < k; i++) {
    long long t;
    cin >> t;
    p2[i] = t;
  }
  sort(tp1.begin(), tp1.end());
  vector<long long> premax(m);
  premax[0] = sec[tp1.front().second];
  for (int i = 1; i < m; i++)
    premax[i] = min(premax[i - 1], sec[tp1[i].second]);
  p2[k] = 0;
  ave[k] = 0;
  long long ans = n * x;
  for (int i = k; i >= 0; i--) {
    if (s < p2[i]) continue;
    long long remain1 = n - ave[i];
    if (remain1 <= 0) {
      ans = 0;
      break;
    }
    long long remain2 = s - p2[i];
    ans = min(ans, remain1 * x);
    int le = 0, ri = m - 1;
    int id = -1;
    while (le <= ri) {
      int mid = (le + ri) / 2;
      if (tp1[mid].first <= remain2) {
        id = mid;
        le = mid + 1;
      } else
        ri = mid - 1;
    }
    if (id >= 0) ans = min(ans, premax[id] * remain1);
  }
  cout << ans;
  return 0;
}
