#include <bits/stdc++.h>
using namespace std;
long long a[3];
long long t[3];
long long p[3];
long long f, T, t0;
long long solve(long long mid1, long long av) {
  long long done = min(a[1] * 1ll * mid1, f);
  long long tim = done * 1ll * t[1];
  long long money_left = av - (mid1 * p[1]);
  long long pos = (money_left / p[2]);
  if (((pos * a[2]) + done) >= f) {
    tim += (f - done) * 1ll * t[2];
  } else {
    tim += (pos * 1ll * a[2] * t[2]);
    done += pos * a[2];
    tim += (f - done) * t0;
  }
  return tim;
}
long long solve2(long long mid1, long long av) {
  long long done = min(a[2] * 1ll * mid1, f);
  long long tim = done * 1ll * t[2];
  long long money_left = av - (mid1 * p[2]);
  long long pos = (money_left / p[1]);
  if (((pos * a[1]) + done) >= f) {
    tim += (f - done) * 1ll * t[1];
  } else {
    tim += (pos * 1ll * a[1] * t[1]);
    done += pos * a[1];
    tim += (f - done) * t0;
  }
  return tim;
}
bool check(long long av) {
  long long cnt = av / p[1];
  cnt = min(cnt, (long long)ceil((1.0 * (T / t[1])) / (1.0 * a[1])));
  long long lo = 0;
  long long hi = cnt;
  long long ans = 1e15;
  if ((hi - lo) <= 1000000) {
    for (int i = lo; i <= hi; i++) {
      ans = min(ans, solve(i, av));
    }
  } else {
    for (int it = 0; it < 300; it++) {
      long long mid1 = lo + ((hi - lo) / 3);
      long long mid2 = hi - ((hi - lo) / 3);
      long long val1 = solve(mid1, av);
      long long val2 = solve(mid2, av);
      ans = min(val1, ans);
      ans = min(val2, ans);
      if (val1 > val2) {
        lo = mid1 + 1;
      } else {
        hi = mid2 - 1;
      }
    }
  }
  cnt = av / p[2];
  cnt = min(cnt, (long long)ceil((1.0 * (T / t[2])) / (1.0 * a[2])));
  lo = 0;
  hi = cnt;
  if ((hi - lo) <= 1000000) {
    for (int i = lo; i <= hi; i++) {
      ans = min(ans, solve2(i, av));
    }
  } else {
    for (int it = 0; it < 300; it++) {
      long long mid1 = lo + ((hi - lo) / 3);
      long long mid2 = hi - ((hi - lo) / 3);
      long long val1 = solve2(mid1, av);
      long long val2 = solve2(mid2, av);
      ans = min(val1, ans);
      ans = min(val2, ans);
      if (val1 > val2) {
        lo = mid1 + 1;
      } else {
        hi = mid2 - 1;
      }
    }
  }
  if (ans <= T) {
    return true;
  } else {
    return false;
  }
}
int main() {
  scanf("%lld %lld %lld", &f, &T, &t0);
  for (int i = 1; i <= 2; i++) {
    scanf("%lld %lld %lld", &a[i], &t[i], &p[i]);
    t[i] = min(t[i], t0);
  }
  long long ans = -1;
  long long lo = 0;
  long long hi = 1e14;
  while (lo <= hi) {
    long long mid = (lo + hi) / 2;
    if (check(mid)) {
      hi = mid - 1;
      ans = mid;
    } else {
      lo = mid + 1;
    }
  }
  printf("%lld\n", ans);
  return 0;
}
