#include <bits/stdc++.h>
using namespace std;
const int N = int(3e5), mod = int(1e9) + 7;
const long long inf = (long long)(1e15) + 12;
pair<long long, long long> p[N];
long long a, b, w, h;
int n;
long long x[N];
long long cnt[N];
bool ok[40][N];
long long d[N], c[N], pref[N];
int dn, cn;
bool checkn(long long a, long long b, long long c) {
  if (c / a + 1 < b) return 0;
  return (a * b <= c);
}
bool bol(long long a, long long b, long long c) {
  if (b >= c) return 1;
  if (a >= c) return 1;
  return (a * b >= c);
}
bool check(long long a, long long b, long long w, long long h, int n) {
  if (pref[n] >= inf) return 1;
  long long mn = inf;
  int k = n / 2;
  dn = 0;
  cn = 0;
  for (int mask = 0; mask < (1 << k); mask++) {
    long long res = 1;
    for (int j = 0; j < k; j++) {
      if (mask & (1 << j)) {
        res *= x[j + 1];
      }
    }
    d[++dn] = res;
  }
  int sz = (n - k);
  for (int mask = 0; mask < (1 << sz); mask++) {
    long long res = 1;
    for (int j = 0; j < sz; j++) {
      if (mask & (1 << j)) {
        res *= x[j + k + 1];
      }
    }
    c[++cn] = res;
  }
  sort(c + 1, c + cn + 1);
  sort(d + 1, d + dn + 1);
  int j = dn;
  for (int i = 1; i <= cn; i++) {
    while (j > 0 && bol(a * c[i], d[j], h)) j--;
    if (c[i] * d[j + 1] >= (h + a - 1) / a) mn = min(mn, c[i] * d[j + 1]);
  }
  if (mn == inf) return 0;
  long long res = pref[n] / mn;
  if (res * b >= w) return 1;
  return 0;
}
int main() {
  cin >> a >> b >> w >> h >> n;
  if (a <= w && b <= h) {
    cout << 0;
    return 0;
  }
  if (a <= h && b <= w) {
    cout << 0;
    return 0;
  }
  swap(a, h);
  swap(b, w);
  for (int i = 1; i <= n; i++) {
    cin >> x[i];
  }
  sort(x + 1, x + n + 1);
  reverse(x + 1, x + n + 1);
  n = min(n, 34);
  int ans = mod;
  pref[0] = 1;
  for (int i = 1; i <= n; i++) {
    if (checkn(pref[i - 1], x[i], inf))
      pref[i] = pref[i - 1] * x[i];
    else
      pref[i] = inf;
  }
  {
    for (int i = 1; i <= n; i++) {
      if (check(a, b, w, h, i)) {
        ans = i;
        break;
      }
    }
  }
  {
    swap(a, b);
    for (int i = 1; i <= n; i++) {
      if (check(a, b, w, h, i)) {
        ans = min(ans, i);
        break;
      }
    }
  }
  if (ans == mod) ans = -1;
  cout << ans;
  return 0;
}
