#include <bits/stdc++.h>
using namespace std;
long long n, m, k, x, s, cmax, a[700007], c[700007], l, left0, f;
pair<long long, long long> spell[700007];
vector<pair<long long, long long> > sorted_spell;
map<long long, long long> p;
void go(long long left1, long long find1) {
  l = 0;
  int r = sorted_spell.size() - 1, m = 0;
  while (l < r) {
    m = (l + r + 1) / 2;
    if (sorted_spell[m].first <= find1) {
      l = m;
    } else {
      r = m - 1;
    }
  }
  cmax = min(cmax, sorted_spell[l].second * left1);
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  ;
  cin >> n >> m >> k;
  cin >> x >> s;
  cmax = x * n;
  for (int i = 0; i < m; i++) {
    cin >> l;
    spell[i].second = l;
  }
  for (int i = 0; i < m; i++) {
    cin >> l;
    spell[i].first = l;
    if (l <= s) {
      cmax = min(spell[i].second * n, cmax);
    }
  }
  sort(spell, spell + m);
  sorted_spell.push_back(make_pair(0, x));
  for (int i = 0; i < m; i++) {
    if (spell[i].second < sorted_spell.back().second)
      sorted_spell.push_back(spell[i]);
  }
  for (int i = 0; i < k; i++) {
    cin >> c[i];
  }
  for (int i = 0; i < k; i++) {
    cin >> p[i];
    if (p[i] <= s) {
      cmax = min((n - c[i]) * x, cmax);
    }
  }
  for (int i = 0; i < k; i++) {
    left0 = n - c[i];
    if (p[i] <= s) {
      f = s - p[i];
      go(left0, f);
    }
  }
  cout << cmax << endl;
}
