use std::vec::Vec; use std::cmp::min; use std::cmp::max; fn read() -> T { let mut s = String::new(); std::io::stdin().read_line(&mut s).ok(); s.trim().parse().ok().unwrap() } fn read_vec() -> Vec { read::().split_whitespace().map(|e| e.parse().ok().unwrap()).collect() } fn main() { let n: usize = read(); let mut process: Vec<((usize, usize), (usize, usize))> = Vec::new(); let mut board: Vec> = vec![vec![0; 9]; 9]; board[1][7] = 1; board[2][8] = 2; board[6][8] = 3; for _ in 0..n { let v: Vec = read_vec(); process.push(((v[0] - 1, v[1] - 1), (v[2] - 1, v[3] - 1))); } for (now, next) in process { moving(&mut board, now, next); } if board[4][7] == 1 && board[3][7] == 2 && board[5][7] == 3{ println!("YES"); } else { println!("NO"); } } fn moving(b: &mut Vec>, now: (usize, usize), next: (usize, usize)) { b[next.0][next.1] = b[now.0][now.1]; b[now.0][now.1] = 0 }