#include <bits/stdc++.h>
using namespace std;
long long n, m;
long long a, b;
long long minkq, maxkq;
long long tinhkc(long long vt1, long long vt2) {
  if (vt1 > vt2) return vt1 - vt2;
  return vt1 + (n * m) - vt2;
}
void thaykq(long long sl) {
  if (sl > maxkq) maxkq = sl;
  if (sl < minkq) minkq = sl;
}
long long timUCLN(long long x, long long y) {
  while (x != 1 && y != 1) {
    if (x > y) {
      if (x % y == 0) return y;
      x = x % y;
    } else {
      if (y % x == 0) return x;
      y = y % x;
    }
  }
  return 1;
}
void xetkq(long long l) {
  long long tong = n * m;
  if (l == 0 || l == tong)
    thaykq(1);
  else {
    long long uoc = timUCLN(l, tong);
    thaykq(tong / uoc);
  }
}
void xet(long long vt) {
  long long vtRes = 0;
  for (int i = 0; i < n; i++) {
    long long vt1 = (vtRes - b + (n * m)) % (n * m);
    long long vt2 = (vtRes + b + (n * m)) % (n * m);
    long long l1 = tinhkc(vt1, vt);
    long long l2 = tinhkc(vt2, vt);
    xetkq(l1);
    xetkq(l2);
    vtRes += m;
  }
}
void solve() {
  minkq = n * m;
  maxkq = -1;
  xet(a);
  xet(m - a);
}
void output() { printf("%I64d %I64d\n", minkq, maxkq); }
int d[35];
int main() {
  while (scanf("%I64d %I64d", &n, &m) > 0) {
    scanf("%I64d %I64d", &a, &b);
    solve();
    output();
  }
  return 0;
}
