#include <bits/stdc++.h>
using namespace std;
int Set(int mask, int pos) { return mask = mask | (1 << pos); }
bool check(int mask, int pos) { return (bool)(mask & (1 << pos)); }
int n, m, k;
long long x, s;
long long a[200005], b[200005], c[200005], d[200005], dp[200005], temp[200005];
vector<pair<long long, long long> > v;
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cin >> n >> m >> k;
  cin >> x >> s;
  long long ans = (n * x);
  for (int i = 0; i < m; i++) {
    cin >> a[i];
  }
  for (int i = 0; i < m; i++) {
    cin >> b[i];
  }
  for (int i = 0; i < m; i++) {
    v.push_back(make_pair(b[i], a[i]));
  }
  sort(v.begin(), v.end());
  for (int i = 0; i < v.size(); i++) {
    if (i) {
      dp[i] = min(dp[i - 1], v[i].second);
    } else
      dp[i] = v[i].second;
    temp[i] = v[i].first;
  }
  for (int i = 0; i < k; i++) cin >> c[i];
  for (int i = 0; i < k; i++) cin >> d[i];
  c[k] = 0, d[k] = 0, k++;
  for (int i = 0; i < k; i++) {
    if (d[i] > s) continue;
    if (n - c[i] <= 0) {
      ans = 0;
      break;
    } else {
      long long t1 = n - c[i], t2 = s - d[i];
      int idx = upper_bound(temp, temp + m, t2) - temp;
      idx--;
      if (idx < 0) continue;
      ans = min(ans, min((t1 * dp[idx]), (t1 * x)));
    }
  }
  cout << ans << endl;
  return 0;
}
