#include <bits/stdc++.h>
using namespace std;
const long long MOD = (long long)1e9 + 7;
const int MAXN = 1e5 + 5;
const long long INF = 1LL << 60;
const long double eps = 1e-10;
const double PI = 3.1415926535897932;
int e[100009];
int v[100009];
int main() {
  int a, b, h;
  scanf("%d%d%d", &a, &b, &h);
  int w, n;
  scanf("%d%d", &w, &n);
  for (int i = 0; i < (n); ++i) {
    scanf("%d", &(e[i]));
  }
  sort(e, e + n, greater<int>());
  for (int qi = 0; qi < (n + 1); ++qi) {
    memset((v), 0, sizeof((v)));
    v[0] = 1;
    vector<long long> can;
    can.push_back(1);
    long long prod = 1;
    for (int i = 0; i < (qi); ++i) {
      long long ts = ((int)(can).size());
      for (int j = 0; j < (ts); ++j) {
        if (can[j] > 100000) break;
        long long nv = can[j] * e[i];
        can.push_back(nv);
      }
      sort((can).begin(), (can).end());
      can.resize(unique((can).begin(), (can).end()) - can.begin());
      prod *= e[i];
    }
    auto it = lower_bound((can).begin(), (can).end(), (w + a - 1) / w);
    if (it < can.end()) {
      long long v1 = *it;
      long long v2 = prod / v1;
      if (v2 * h >= b) {
        printf("%d", qi);
        return 0;
      }
    }
    it = lower_bound((can).begin(), (can).end(), (w + b - 1) / w);
    if (it < can.end()) {
      long long v1 = *it;
      long long v2 = prod / v1;
      if (v2 * h >= a) {
        printf("%d", qi);
        return 0;
      }
    }
  }
  printf("-1");
}
