#include <bits/stdc++.h>
using namespace std;
const int N = 100500;
int a[N];
int n;
const int LOG = 17;
int res = N;
int p, q;
set<pair<int, int> > used[3 * LOG];
void brute(int pos, int x, int y) {
  if (x >= p && y >= q) {
    res = min(res, pos);
    return;
  }
  if (pos == n) return;
  if (used[pos].count(pair<int, int>(x, y))) return;
  used[pos].insert(pair<int, int>(x, y));
  if (x < p) brute(pos + 1, min(1ll * x * a[pos], 1ll * N), y);
  if (y < q) brute(pos + 1, x, min(1ll * y * a[pos], 1ll * N));
}
void solve(int x, int y) {
  p = x;
  q = y;
  for (int i = 0; i < 3 * LOG; i++) used[i].clear();
  brute(0, 1, 1);
}
int div_up(int a, int b) { return a / b + (a % b > 0); }
void solve(int x, int y, int w, int h) { solve(div_up(x, w), div_up(y, h)); }
void solve() {
  int x, y, h, w;
  scanf("%d%d%d%d%d", &x, &y, &h, &w, &n);
  for (int i = 0; i < n; i++) scanf("%d", &a[i]);
  sort(a, a + n);
  reverse(a, a + n);
  n = min(n, 2 * LOG);
  solve(x, y, w, h);
  solve(y, x, w, h);
  if (res == N) res = -1;
  printf("%d\n", res);
}
int main() {
  solve();
  (void)0;
  return 0;
}
