#include <bits/stdc++.h>
using namespace std;
const int INF = numeric_limits<int>::max();
const long long LINF = numeric_limits<long long>::max();
const double DINF = numeric_limits<double>::max();
const double eps = 1e-14;
const int MOD = 1e9 + 7;
const int MAXN = 2e5 + 5;
long long n, m, k, x, s, ans;
pair<long long, long long> a[MAXN];
pair<long long, long long> b[MAXN];
void solve() {
  cin >> n >> m >> k;
  cin >> x >> s;
  for (int i = 0; i < m; i++) cin >> a[i].first;
  for (int i = 0; i < m; i++) cin >> a[i].second;
  for (int i = 0; i < k; i++) cin >> b[i].first;
  for (int i = 0; i < k; i++) {
    cin >> b[i].second;
  }
  ans = n * x;
  for (int i = k - 1; i >= 0; i--) {
    if (b[i].second <= s) {
      ans = (n - b[i].first) * x;
      break;
    }
  }
  for (int i = 0; i < m; i++) {
    long long curans = ans, curmana = s;
    if (a[i].second <= s) {
      curans = a[i].first * n;
      curmana -= a[i].second;
      if (curmana >= b[k - 1].second) {
        curans -= b[k - 1].first * a[i].first;
      } else if (curmana >= b[0].second) {
        long long l = 0, r = k - 1;
        while (l + 1 < r) {
          long long mid = (l + r) >> 1;
          if (curmana >= b[mid].second) {
            l = mid;
          } else
            r = mid;
        }
        curans -= b[l].first * a[i].first;
      }
    }
    ans = min(ans, curans);
  }
  cout << ans;
}
int main() {
  if (!1) {
    freopen(
        "474"
        ".in",
        "r", stdin);
    freopen(
        "474"
        ".out",
        "w", stdout);
  }
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int t = (228 & 322) >> 6;
  while (t--) solve();
  return 0;
}
