#include <bits/stdc++.h>
using namespace std;
vector<long long> prime(1000009, -1);
long long power(long long x, long long y, long long m) {
  x %= m;
  long long ans = 1;
  while (y) {
    if (y & 1) {
      ans = (ans * x) % m;
    }
    x = (x * x) % m;
    y >>= 1;
  }
  return ans % m;
}
long long binary(vector<pair<long long, long long>>& a, long long l,
                 long long h, long long key) {
  if (l >= h) return h;
  long long mid = (l + h) / 2;
  if (a[mid].first == key) return mid;
  if (a[mid].first > key) return binary(a, l, mid - 1, key);
  if (a[mid].first < key) return binary(a, mid + 1, h, key);
}
void sieve() {
  for (long long i = 2; i * i < prime.size(); i++) {
    if (prime[i]) {
      for (long long j = i * i; j < prime.size(); j += i) prime[j] = -1;
    }
  }
}
signed main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long a1, a2, k1, k2, n;
  cin >> a1 >> a2 >> k1 >> k2 >> n;
  long long mi, ma;
  if (k1 * a1 + k2 * a2 == n) {
    cout << a1 + a2 << " " << a1 + a2;
    return 0;
  }
  if (k1 > n && k2 > n) {
    cout << 0 << " " << 0;
    return 0;
  }
  if (a1 * (k1 - 1) + a2 * (k2 - 1) >= n)
    mi = 0;
  else
    mi = n - a1 * (k1 - 1) - a2 * (k2 - 1);
  if (k1 >= k2) {
    long long r = n / k2;
    if (r > a2) {
      ma = a2;
      n -= a2 * k2;
      ma += n / k1;
    } else
      ma = r;
  } else {
    long long r = n / k1;
    if (r > a1) {
      ma = a1;
      n -= a1 * k1;
      ma += n / k2;
    } else
      ma = r;
  }
  cout << mi << " " << ma;
  return 0;
}
