/* * Author: srtry * Created: 2026-01-10T00:03:43+09:00 * Coding: utf-8-unix */ use proconio::input; use std::io::{stdout,Write,BufWriter}; use std::mem::swap; fn main() { input!{ mut x1:usize, mut y1:usize, mut x2:usize, mut y2:usize, mut x3:usize, mut y3:usize, } let out = stdout(); let mut out = BufWriter::new(out.lock()); if y1>=y2 {swap( &mut y1, &mut y2); swap( &mut x1, &mut x2);}; if y1>=y3 {swap( &mut y1, &mut y3); swap( &mut x1, &mut x3);}; if y2>=y3 {swap( &mut y2, &mut y3); swap( &mut x2, &mut x3);}; let lcm:usize = { let mut a:usize = y3.clone(); let mut b:usize = y2.clone(); let mut tmp:usize; loop { if a%b == 0 {break;} tmp = a; a = b.clone(); b = tmp%a; } y2*y3/b }; let mut flg:bool = true; let mut p:usize = if x3!=0 {x3} else {y3}; for _ in 0..y2 { if p%y2 == x2 { flg = false; break; } p += y3; } if flg { write!(out, "-1", ).unwrap(); return; } flg = true; let mut ans:usize = p; for _ in 0..y1 { if ans%y1 == x1 { flg = false; break; } ans += lcm; } if flg { write!(out, "-1").unwrap(); return } write!(out, "{}", ans).unwrap(); }