fn main() { let mut sc = cin(); while sc.read() { let n:usize = sc.next(); let ans = [ 7, 8, 9, 4, 5, 6, 1, 2, 3, 0 ]; println!("{}", ans[n-1]); } } #[allow(dead_code)] fn cin() -> Scanner { Scanner::new(std::io::stdin()) } #[allow(dead_code)] pub struct Scanner { buf: Vec, len: usize, idx: usize, next: Option, reader: T, } #[allow(dead_code)] impl Scanner { fn new(r: Reader) -> Scanner { Scanner { buf: vec![0; 8192], len: 0, idx: 0, next: None, reader: r, } } fn next(&mut self) -> T { self.wrapped::().unwrap() } fn vec(&mut self, n: usize) -> Vec { (0..n).map(|_| self.next()).collect() } fn mat(&mut self, r: usize, c: usize) -> Vec> { (0..r).map(|_| self.vec(c)).collect() } fn vec_char(&mut self) -> Vec { self.read(); self.next.take().unwrap().chars().collect() } fn mat_char(&mut self, r: usize) -> Vec> { (0..r).map(|_| self.vec_char()).collect() } fn wrapped(&mut self) -> Option { self.read(); self.next.take().and_then(|s| s.parse::().ok()) } fn read(&mut self) -> bool { if self.next.is_some() { return true; } let mut s = String::with_capacity(16); while let Some(c) = self.get_char() { if !c.is_whitespace() { s.push(c); } else if !s.is_empty() { break; } } self.next = if !s.is_empty() { Some(s) } else { None }; self.next.is_some() } fn get_char(&mut self) -> Option { if self.idx == self.len { match self.reader.read(&mut self.buf[..]) { Ok(l) if l > 0 => { self.idx = 0; self.len = l; } _ => return None, } } self.idx += 1; Some(self.buf[self.idx - 1] as char) } }