#include <bits/stdc++.h>
using namespace std;
template <typename tp>
void read(tp& x) {
  x = 0;
  char c = getchar();
  bool sgn = 0;
  while ((c < '0' || c > '9') && c != '-') c = getchar();
  if (c == '-') sgn = 1, c = getchar();
  while (c >= '0' && c <= '9') x = (x << 3) + (x << 1) + c - '0', c = getchar();
  if (sgn) x = -x;
}
template <typename tp>
void write(tp x) {
  if (x < 0)
    putchar('-'), write(-x);
  else {
    if (x >= 10) write(x / 10);
    putchar(x % 10 + '0');
  }
}
long long m, n, a, b;
long long w(long long x) { return x ? x : n * m; }
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
long long solve(long long x, long long y) {
  long long t = w((y + n * m - x) % (n * m));
  long long l = n * m / gcd(t, n * m);
  return l;
}
int main() {
  read(m), read(n), read(a), read(b);
  long long mi = LLONG_MAX, mx = LLONG_MIN;
  for (long long i = 1, j = 1 + b, tmp; i <= m; i++, j += n) {
    tmp = solve(1 + a, j);
    mi = min(mi, tmp);
    mx = max(mx, tmp);
  }
  for (long long i = 1, j = n + 1 - b, tmp; i <= m; i++, j += n) {
    tmp = solve(1 + a, j);
    mi = min(mi, tmp);
    mx = max(mx, tmp);
  }
  write(mi), putchar(' '), write(mx);
  return 0;
}
