use std::io::{Read, stdin}; use std::collections::HashMap; fn main() { let mut buf = String::new(); stdin().read_to_string(&mut buf).unwrap(); let mut tok = buf.split_whitespace(); let mut get = || tok.next().unwrap(); macro_rules! get { ($t:ty) => (get().parse::<$t>().unwrap()); () => (get!(i64)); } let m = 1000000007; let n = get!(); let mut h = HashMap::new(); h.insert((n, n), 1); for _ in 0..2*n { let mut t = HashMap::new(); for (&(p, b), c) in h.iter() { if p > 0 { t.insert((p - 1, b), c * p % m); } if p != b { t.insert((p, b - 1), c * (2 * n - p - b) * b % m); } } h = t; } println!("{}", h.get(&(0,0)).unwrap()); }