use std::task::Context; fn main() { let mut nkx = String::new(); std::io::stdin().read_line(&mut nkx).ok(); let nkx: Vec = nkx.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let n = nkx[0]; let k = nkx[1]; let x = nkx[2]; let fronts = (0..x).map(|i| { let mut temp = String::new(); std::io::stdin().read_line(&mut temp).ok(); if i < x-1 { let temp: Vec = temp.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); (temp[0]-1, temp[1]-1) } else { (0, 0) } }) .collect::>(); let mut backs = (x..k).map(|_| { let mut temp = String::new(); std::io::stdin().read_line(&mut temp).ok(); let temp: Vec = temp.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); (temp[0]-1, temp[1]-1) }) .collect::>(); let mut c = String::new(); std::io::stdin().read_line(&mut c).ok(); let mut ends: Vec = c.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let mut starts = (1..=n).collect::>(); for &(a, b) in fronts.iter() { starts.swap(a, b); } backs.reverse(); for &(a, b) in backs.iter() { ends.swap(a, b) } let mut result = vec![]; for i in 0..n { if starts[i] != ends[i] { result.push(i+1); } } println!("{} {}", result[0], result[1]); }