#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int INF = 0x3f3f3f3f;
const long long INFLL = 0x3f3f3f3f3f3f3f3f;
const int MAXN = 1e5 + 5;
int q[MAXN];
int a, b, h, w, n, ta, tb;
int d[2][MAXN];
int ans = INF;
int solve(int ta, int tb) {
  int now = 0;
  d[0][1] = 1;
  for (int i = 0; i < n; i++) {
    for (int k = 1; k <= ta; k++) {
      d[!now][k] = max((long long)d[!now][k],
                       min((long long)d[now][k] * q[i], (long long)tb));
      d[!now][min((long long)ta, (long long)k * q[i])] =
          max(d[!now][min((long long)ta, (long long)k * q[i])], d[now][k]);
    }
    if (d[!now][ta] >= tb) {
      return i + 1;
    }
    now = !now;
  }
  return INF;
}
int main() {
  cin >> a >> b >> h >> w >> n;
  for (int i = 0; i < n; i++) {
    scanf("%d", &q[i]);
  }
  sort(q, q + n);
  reverse(q, q + n);
  int flag = 0, ans = -1;
  if ((a <= h && b <= w) || ((a <= w) && (b <= h))) {
    puts("0");
    return 0;
  }
  ta = (a + h - 1) / h;
  tb = (b + w - 1) / w;
  ans = solve(ta, tb);
  memset(d, 0, sizeof(d));
  ta = (a + w - 1) / w;
  tb = (b + h - 1) / h;
  ans = min(ans, solve(ta, tb));
  printf("%d\n", ans == INF ? -1 : ans);
}
