#include <bits/stdc++.h>
using namespace std;
const long long int inf = 0x3f3f3f3f3f3f3f3f;
const int maxn = 100010;
long long int qGCD(long long int a, long long int b) {
  if (a == 0) return b;
  if (b == 0) return a;
  if (!(a & 1) && !(b & 1))
    return qGCD(a >> 1, b >> 1) << 1;
  else if (!(b & 1))
    return qGCD(a, b >> 1);
  else if (!(a & 1))
    return qGCD(a >> 1, b);
  else
    return qGCD(abs(a - b), min(a, b));
}
int main() {
  long long int n, k;
  while (scanf("%lld%lld", &n, &k) != EOF) {
    long long int a, b;
    scanf("%lld%lld", &a, &b);
    long long int L[5];
    L[0] = (a + b) % k;
    L[1] = (a - b + k) % k;
    L[2] = (-a + b + k) % k;
    L[3] = (-a - b + k + k) % k;
    long long int maxx = -1, minn = inf;
    long long int cnt = n * k;
    for (int i = 0; i < 4; ++i) {
      for (int j = 0; j < n; ++j) {
        long long int tmp = qGCD(L[i] + j * k, n * k);
        tmp = cnt / tmp;
        maxx = max(tmp, maxx);
        minn = min(tmp, minn);
      }
    }
    printf("%lld %lld\n", minn, maxx);
  }
  return 0;
}
