#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll N = 300000;
ll factor[N];
ll next[N];
map<ll, ll> nk;
map<ll, ll> nk_copy;
ll factorr(ll x) {
  if (x % 2 == 0) return 2;
  for (ll i = 3; i < sqrt(x) + 1; i += 2) {
    if (x % i == 0) return i;
  }
  return x;
}
ll check(ll x) {
  if (x == 0) return 1;
  nk_copy = nk;
  ll y = 1;
  for (auto &[key, value] : nk_copy) {
    while (value > 0) {
      if (x % key == 0) {
        x /= key;
      } else {
        y *= key;
      }
      value--;
    }
  }
  return y;
}
int main() {
  ll n, k;
  cin >> n >> k;
  for (ll i = 2; i < N; i++) {
    if (factor[i] == 0) {
      factor[i] = i;
      for (ll j = 2 * i; j < N; j += i) {
        factor[j] = i;
      }
    }
  }
  ll tmp = n;
  while (tmp > 1) {
    nk[factor[tmp]]++;
    tmp /= factor[tmp];
  }
  tmp = k;
  while (tmp > 1) {
    nk[factor[tmp]]++;
    tmp /= factor[tmp];
  }
  ll a, b;
  ll outmin = n * k;
  ll outmax = 0;
  cin >> a >> b;
  for (ll i = 0; i < n; i++) {
    ll x = i * k + a - b;
    if (x >= n * k) x -= n * k;
    if (x < 0) x += n * k;
    ll y = check(x);
    outmin = min(y, outmin);
    outmax = max(y, outmax);
  }
  for (ll i = 0; i < n; i++) {
    ll x = i * k + a + b;
    if (x >= n * k) x -= n * k;
    if (x < 0) x += n * k;
    ll y = check(x);
    outmin = min(y, outmin);
    outmax = max(y, outmax);
  }
  cout << outmin << " " << outmax << endl;
}
