#[allow(unused_imports)] use std::cmp::{Ordering}; #[allow(unused_imports)] use std::collections::{BTreeMap, BTreeSet, BinaryHeap, HashMap, HashSet, VecDeque}; #[allow(unused_imports)] use std::io::{stdin, stdout, BufWriter, Write}; #[allow(unused_imports)] use std::iter::FromIterator; #[allow(unused_macros)] macro_rules! min { ($x: expr) => ($x); ($x: expr, $($z: expr),+) => {{ std::cmp::min($x, min!($($z),*)) }} } #[allow(unused_macros)] macro_rules! max { ($x: expr) => ($x); ($x: expr, $($z: expr),+) => {{ std::cmp::max($x, max!($($z),*)) }} } #[allow(unused_macros)] macro_rules! get { ([$t: ty]) => { { let mut line = String::new(); stdin().read_line(&mut line).unwrap(); line.split_whitespace().map(|t|t.parse::<$t>().unwrap()).collect::>() } }; ([$t: ty];$n: expr) => { (0..$n).map(|_|get!([$t])).collect::>() }; ($t: ty) => { { let mut line = String::new(); stdin().read_line(&mut line).unwrap(); line.trim().parse::<$t>().unwrap() } }; ($($t: ty),*) => { { let mut line = String::new(); stdin().read_line(&mut line).unwrap(); let mut iter = line.split_whitespace(); ($(iter.next().unwrap().parse::<$t>().unwrap(),)*) } }; ($t: ty; $n: expr) => { (0..$n).map(|_|get!($t)).collect::>() }; ($($t: ty),*; $n: expr) => { (0..$n).map(|_|get!($($t),*)).collect::>() }; } #[allow(unused_macros)] macro_rules! debug { ($($a:expr),*) => { #[cfg(debug_assertions)] writeln!(&mut std::io::stderr(), concat!("[DEBUG] ", $(stringify!($a), "={:?} "),*), $($a),*).unwrap(); } } const BIG_STACK_SIZE: bool = true; #[allow(dead_code)] fn main() { use std::thread; if BIG_STACK_SIZE { thread::Builder::new() .stack_size(32 * 1024 * 1024) .name("solve".into()) .spawn(solve) .unwrap() .join() .unwrap(); } else { solve(); } } fn solve() { let (l,r,m) = get!(usize, usize, usize); if r <= m { println!("{}", r-l+1); } else { println!("{}", min!(m,max!(r-l+1, r-m+1))); } }