#![allow(non_snake_case)] use proconio::*; // https://maguro.dev/blog/debug-macro/ #[allow(unused_macros)] macro_rules! debug { ($($a:expr),* $(,)*) => { #[cfg(debug_assertions)] eprintln!(concat!($("| ", stringify!($a), " = {:?} "),*, "|"), $(&$a),*); }; } fn main() { std::thread::Builder::new() .stack_size(256 * 1024 * 1024) .spawn(solve) .unwrap() .join() .unwrap(); } fn solve() { input! { n: usize, a: [usize; n] } let v = 10_usize.pow(9) + 7; if a.iter().any(|&u| 4 <= u) { println!("{}", v); return; } let mut prod = 1; for &x in &a { match x { 2 => { prod *= 4; } 3 => { prod *= 3_usize.pow(6); } _ => {} } if v < prod { println!("{}", v); return; } } println!("{}", v % prod); }