use proconio::input;

fn main() {
    input! {
        a: [i64; 4],
    }

    let g = a.iter().fold(0_i64, |acc, &x| gcd(acc, x));
    let abs_det = (a[0] * a[3] - a[1] * a[2]).abs();
    let a22 = if g == 0 { abs_det } else { abs_det / g };
    println!("{} {}", g, a22);
}

fn gcd(a: i64, b: i64) -> i64 {
    let mut a = a.abs();
    let mut b = b.abs();

    while b != 0 {
        let r = a % b;
        a = b;
        b = r;
    }

    a
}