#include <bits/stdc++.h>
using namespace std;
int binarylow(vector<long long> &a, long long low, long long high,
              long long k) {
  long long mid = (low + high) / 2;
  if (low > high)
    return high;
  else if (a[mid] == k)
    return binarylow(a, mid + 1, high, k);
  else if (a[mid] < k)
    return binarylow(a, mid + 1, high, k);
  else if (a[mid] > k)
    return binarylow(a, low, mid - 1, k);
}
int binary(long long *a, long long low, long long high, long long k) {
  long long mid = (low + high) / 2;
  if (low > high)
    return -1;
  else if (a[mid] == k)
    return mid;
  else if (a[mid] < k)
    return binary(a, mid + 1, high, k);
  else if (a[mid] > k)
    return binary(a, low, mid - 1, k);
}
int binaryhigh(vector<long long> &a, long long low, long long high,
               long long k) {
  long long mid = (low + high) / 2;
  if (low > high)
    return low;
  else if (a[mid] == k)
    return binaryhigh(a, mid + 1, high, k);
  else if (a[mid] < k)
    return binaryhigh(a, mid + 1, high, k);
  else if (a[mid] > k)
    return binaryhigh(a, low, mid - 1, k);
}
long long gcd(long long a, long long b) {
  if (b == 0)
    return a;
  else
    return gcd(b, a % b);
}
long long power(long long x, long long n) {
  long long res = 1;
  if (n == 0)
    return 1;
  else if (n == 1)
    return x;
  else {
    while (n > 0) {
      if (n % 2 == 1) {
        res = ((res % 1000000007) * (x % 1000000007)) % 1000000007;
        n--;
      } else {
        x = ((x % 1000000007) * (x % 1000000007)) % 1000000007;
        n = (n) / 2;
      }
    }
    return res % 1000000007;
  }
}
int main() {
  long long t;
  t = 1;
  while (t--) {
    long long n, m, k;
    cin >> n >> m >> k;
    vector<long long> fast, c_f, make, c_m;
    long long x, s, i, j;
    cin >> x >> s;
    for (i = 0; i < m; i++) {
      cin >> j;
      fast.push_back(j);
    }
    for (i = 0; i < m; i++) {
      cin >> j;
      c_f.push_back(j);
    }
    for (i = 0; i < k; i++) {
      cin >> j;
      make.push_back(j);
    }
    for (i = 0; i < k; i++) {
      cin >> j;
      c_m.push_back(j);
    }
    long long ans = (x * n), new_x;
    long long ind;
    ind = binarylow(c_m, 0, k - 1, s);
    if (ind != -1) ans = min(ans, (n - make[ind]) * x);
    for (i = 0; i < m; i++) {
      if (c_f[i] <= s) {
        new_x = fast[i];
        ind = binarylow(c_m, 0, k - 1, s - c_f[i]);
        if (ind != -1) {
          ans = min(ans, (n - make[ind]) * new_x);
        } else {
          ans = min(ans, new_x * n);
        }
      }
    }
    cout << ans;
  }
}
