#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7, mod2 = 998244353;
unsigned long long base = 131;
long long m, n;
long long v[5], w[5];
long long gcd(long long x, long long y) { return y == 0 ? x : gcd(y, x % y); }
int main() {
  long long i, j, k, t;
  long long vv;
  cin >> vv >> w[0] >> w[1] >> v[0] >> v[1];
  if (w[0] * v[1] < w[1] * v[0]) swap(w[0], w[1]), swap(v[0], v[1]);
  long long max1 = vv / v[0] * w[0];
  long long ans = 0;
  if (v[0] <= sqrt(vv))
    for (i = 0; i < v[0]; i++) {
      int q = (vv - i * v[1]) / v[0];
      if (q < 0) break;
      max1 = max(max1, i * w[1] + q * w[0]);
    }
  else
    for (i = 0; i <= vv / v[0]; i++) {
      int q = (vv - i * v[0]) / v[1];
      if (q < 0) break;
      max1 = max(max1, i * w[0] + q * w[1]);
    }
  ans = max1;
  cout << ans << endl;
  return 0;
}
