fn main() { let mut temp = String::new(); std::io::stdin().read_line(&mut temp).ok(); let temp: Vec = temp.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let b0 = temp[0]; let c0 = temp[1]; let mut temp = String::new(); std::io::stdin().read_line(&mut temp).ok(); let temp: Vec = temp.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let b1 = temp[0]; let c1 = temp[1]; for i in 0..=b0*b1 { let c0 = (b0 * c0.abs() + c0) % b0; let c1 = (b1 * c1.abs() + c1) % b1; if i % b0 == c0 && i % b1 == c1 { println!("{}", i); return; } } println!("NaN"); }