#include <bits/stdc++.h>
using namespace std;
int n, answer = 1000000007;
long long d[200005], v[200005];
void solve(int A, int B, int H, int W) {
  if (A <= H && B <= W) {
    answer = 0;
    return;
  }
  int l = (A / H + (A % H ? 1 : 0));
  int c = (B / W + (B % W ? 1 : 0));
  int ok = 1;
  d[1] = 1;
  for (int i = 1; i <= n && ok; i++) {
    for (int j = l - 1; j >= 1 && ok; j--) {
      if (!d[j]) continue;
      if ((long long)j * v[i] >= l) {
        if (d[j] >= c) {
          answer = min(answer, i);
          ok = 0;
        }
      } else
        d[j * v[i]] = d[j];
      if (d[j] < 100000) d[j] = min((long long)100000, d[j] * v[i]);
    }
  }
  memset(d, 0, sizeof(d));
  ok = 1;
  d[1] = 1;
  for (int i = 1; i <= n && ok; i++) {
    for (int j = c - 1; j >= 1 && ok; j--) {
      if (!d[j]) continue;
      if ((long long)j * v[i] >= c) {
        if (d[j] >= l) {
          answer = min(answer, i);
          ok = 0;
        }
      } else
        d[j * v[i]] = d[j];
      if (d[j] < 100000) d[j] = min((long long)100000, d[j] * v[i]);
    }
  }
  memset(d, 0, sizeof(d));
}
int main() {
  int a, b, h, w;
  scanf("%d%d%d%d%d", &a, &b, &h, &w, &n);
  for (int i = 1; i <= n; i++) scanf("%I64d", &v[i]);
  sort(v + 1, v + n + 1);
  reverse(v + 1, v + n + 1);
  n = min(40, n);
  solve(a, b, h, w);
  solve(a, b, w, h);
  if (answer != 1000000007)
    printf("%d\n", answer);
  else
    printf("-1\n");
  return 0;
}
