#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline bool chkmin(T &a, T b) {
  return a > b ? a = b, 1 : 0;
}
template <typename T>
inline bool chkmax(T &a, T b) {
  return a < b ? a = b, 1 : 0;
}
int q[100000];
int n, h, w;
int dp[51][100001];
unsigned solve(int a, int b) {
  for (int i = 0; i <= n; i++) {
    for (int j = 0; j < 100001; j++) {
      if ((long long)a * j >= h && (long long)b * dp[i][j] >= w) {
        return i;
      }
    }
  }
  return -1;
}
int main() {
  int a, b;
  scanf("%d%d%d%d%d", &h, &w, &a, &b, &n);
  for (int i = 0; i < n; i++) {
    scanf("%d", q + i);
  }
  sort(q, q + n, greater<int>());
  n = min(n, 50);
  dp[0][1] = 1;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < 100001; j++) {
      if (dp[i][j]) {
        chkmax(dp[i + 1][j], (int)min((long long)dp[i][j] * q[i], 100000LL));
        chkmax(dp[i + 1][(int)min((long long)j * q[i], 100000LL)], dp[i][j]);
      }
    }
  }
  unsigned a1 = solve(a, b);
  unsigned a2 = solve(b, a);
  unsigned a3 = min(a1, a2);
  printf("%d\n", (int)a3);
  return 0;
}
