#include <bits/stdc++.h>
using namespace std;
long long gcd(long long x, long long y) { return y == 0 ? x : gcd(y, x % y); }
int main() {
  long long n, k, a, b;
  scanf("%lld %lld %lld %lld", &n, &k, &a, &b);
  long long s1 = a, s2 = n * k - a;
  long long t1 = b, t2 = n * k - b;
  long long shuchu1 = 0;
  long long shuchu2 = 1e18;
  long long len;
  for (long long i = 0; i < n; i++) {
    t1 = (i * k + b + n * k) % (n * k);
    t2 = (i * k - b + n * k) % (n * k);
    len = (t1 - s1 + n * k) % (n * k);
    if (len) {
      shuchu1 = max(shuchu1, n * k / gcd(len, n * k));
      shuchu2 = min(shuchu2, n * k / gcd(len, n * k));
    } else {
      shuchu1 = max(shuchu1, (long long)1);
      shuchu2 = min(shuchu2, (long long)1);
    }
    len = (t2 - s1 + n * k) % (n * k);
    if (len) {
      shuchu1 = max(shuchu1, n * k / gcd(len, n * k));
      shuchu2 = min(shuchu2, n * k / gcd(len, n * k));
    } else {
      shuchu1 = max(shuchu1, (long long)1);
      shuchu2 = min(shuchu2, (long long)1);
    }
    len = (t1 - s2 + n * k) % (n * k);
    if (len) {
      shuchu1 = max(shuchu1, n * k / gcd(len, n * k));
      shuchu2 = min(shuchu2, n * k / gcd(len, n * k));
    } else {
      shuchu1 = max(shuchu1, (long long)1);
      shuchu2 = min(shuchu2, (long long)1);
    }
    len = (t2 - s2 + n * k) % (n * k);
    if (len) {
      shuchu1 = max(shuchu1, n * k / gcd(len, n * k));
      shuchu2 = min(shuchu2, n * k / gcd(len, n * k));
    } else {
      shuchu1 = max(shuchu1, (long long)1);
      shuchu2 = min(shuchu2, (long long)1);
    }
  }
  printf("%lld %lld\n", shuchu2, shuchu1);
}
