fn main() { let mut buf = String::new(); let mut input = { use std::io::Read; std::io::stdin().read_to_string(&mut buf).unwrap(); buf.split_whitespace() }; let a: usize = input.next().unwrap().parse().unwrap(); let b: usize = input.next().unwrap().parse().unwrap(); let c: usize = input.next().unwrap().parse().unwrap(); let d: usize = input.next().unwrap().parse().unwrap(); let m: usize = input.next().unwrap().parse().unwrap(); let output = { let mut v = vec![]; for i in a..=b { for j in c..=d { v.push((i + j) % m); } } v.sort(); v.last().unwrap().clone() }; println!("{}", output); }