use std::collections::VecDeque; fn main() { let mut n = String::new(); std::io::stdin().read_line(&mut n).ok(); let n: usize = n.trim().parse().unwrap(); let mut a = String::new(); std::io::stdin().read_line(&mut a).ok(); let mut a: Vec = a.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); a.sort(); if n == 1 { println!("{}", a[0]); return; } else if n % 2 == 1 { println!("1"); return; } let l = a[0]; let r = a[1]; let mut a = a.into_iter().skip(2).collect::>(); a.push(l*r); a.sort(); let mut a = a.into_iter().collect::>(); let mut bob = true; while a.len() > 1 { if bob { a.pop_back(); a.pop_back(); a.push_front(1); } else { let l = a.pop_front().unwrap(); let r = a.pop_front().unwrap(); a.push_front(l*r); } bob = !bob; } println!("{}", a[0]); }