#include <bits/stdc++.h>
using namespace std;
vector<long long> arr(100001);
map<pair<int, pair<long long, long long>>, long long> dp;
int n;
long long a, b, h, w;
long long f(int i, long long x, long long y, long long a, long long b) {
  if (x >= a && y >= b) return 0;
  if (dp.find({i, {x, y}}) != dp.end()) return dp[{i, {x, y}}];
  if (i >= n) return 1e9;
  int fir = 1e9, sec = 1e9;
  if (x < a) fir = f(i + 1, x * arr[i], y, a, b);
  if (y < b) sec = f(i + 1, x, y * arr[i], a, b);
  dp[{i, {x, y}}] = min(fir, sec) + (long long)1;
  return dp[{i, {x, y}}];
}
int main() {
  cin >> a >> b >> h >> w >> n;
  for (int i = 0; i < n; i++) cin >> arr[i];
  sort(arr.begin(), arr.begin() + n);
  reverse(arr.begin(), arr.begin() + n);
  long long res = f(0, h, w, a, b);
  dp.clear();
  long long res1 = f(0, h, w, b, a);
  long long ans = 1e9;
  if (res < 1e9) ans = min(ans, res);
  if (res1 < 1e9) ans = min(ans, res1);
  if (ans >= 1e9)
    cout << -1 << endl;
  else
    cout << ans << endl;
}
