#include <bits/stdc++.h>
using namespace std;
long long n;
long long k;
long long a;
long long b;
long long gcd(long long x, long long y) {
  if (y == 0) return x;
  return gcd(y, x % y);
}
pair<long long, long long> get_dist(long long g, long long h) {
  long long first = (g - h + (long long)n * k) % ((long long)n * k);
  long long second = n * k - first;
  return {first, second};
}
long long need_circles(long long l) { return n * k / gcd(l, n * k); }
long long get_max(long long town) {
  long long ans = 0;
  for (long long i = 1; i <= n * k; i += k) {
    long long city1 = (i - b + n * k) % (n * k);
    long long city2 = (i + b) % (n * k);
    auto it1 = get_dist(city1, town);
    auto it2 = get_dist(city2, town);
    ans = max(need_circles(it1.first), ans);
    ans = max(need_circles(it1.second), ans);
    ans = max(need_circles(it2.first), ans);
    ans = max(need_circles(it2.second), ans);
  }
  return ans;
}
long long get_min(long long town) {
  long long ans = 1e18;
  for (long long i = 1; i <= n * k; i += k) {
    long long city1 = (i - b + n * k) % (n * k);
    long long city2 = (i + b) % (n * k);
    auto it1 = get_dist(city1, town);
    auto it2 = get_dist(city2, town);
    ans = min(need_circles(it1.first), ans);
    ans = min(need_circles(it1.second), ans);
    ans = min(need_circles(it2.first), ans);
    ans = min(need_circles(it2.second), ans);
  }
  return ans;
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> k;
  cin >> a >> b;
  long long max1 = get_max(1 + a), max2 = get_max(k + 1 - a);
  long long min1 = get_min(1 + a), min2 = get_min(k + 1 - a);
  cout << min(min1, min2) << " " << max(max1, max2);
  return 0;
}
