fn read_data() -> (usize, usize, usize, usize, usize) { let mut buf = String::new(); std::io::stdin().read_line(&mut buf).ok(); let parse_to = |e: &str| -> usize { e.parse().unwrap() }; let v: Vec = buf.trim().split_whitespace().map(parse_to).collect(); (v[0], v[1], v[2], v[3], v[4]) } fn main() { let (a, b, c, d, m) = read_data(); let mut max_mod = 0; for x in a..=b { for y in c..=d { max_mod = std::cmp::max(max_mod, (x + y) % m); } } println!("{}", max_mod); }