#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
const long long int INFF = 1e17;
const double EPS = 1e-9;
const long long int MOD = 1e9 + 7;
const int MAXN = 1e5 + 10;
long long int a, b, h, w, n, x[MAXN];
map<pair<long long int, long long int>, int> dp[MAXN];
int f(int index, long long int currh, long long int currw) {
  if (dp[index].find(make_pair(currh, currw)) != dp[index].end())
    return dp[index][make_pair(currh, currw)];
  long long int nh = currh * h, nw = currw * w;
  if (nh >= a && nw >= b) return dp[index][make_pair(currh, currw)] = 0;
  if (index >= n) return dp[index][make_pair(currh, currw)] = INF;
  int ans = INF;
  if (nh < a) ans = min(ans, 1 + f(index + 1, currh * x[index], currw));
  if (nw < b) ans = min(ans, 1 + f(index + 1, currh, currw * x[index]));
  return dp[index][make_pair(currh, currw)] = ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin >> a >> b >> h >> w >> n;
  for (int i = 0; i < n; i++) cin >> x[i];
  sort(x, x + n);
  reverse(x, x + n);
  n = min(n, (long long int)40);
  int ans = INF;
  ans = min(ans, f(0, 1, 1));
  for (int i = 0; i < n; i++) dp[i].clear();
  swap(a, b);
  ans = min(ans, f(0, 1, 1));
  ans == INF ? cout << -1 << endl : cout << ans << endl;
  return 0;
}
