const INF: isize = 1isize << 60; 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 a: Vec = a.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let b = (0..n).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 }) .collect::>(); let mut pairs = 0usize; let mut result = -INF; for i in 1..1usize<> j) & 1) == 1).map(|j| a[j]).sum::(); for j in 0..n { if ((i >> j) & 1) == 0 { continue; } for k in j+1..n { if ((i >> k) & 1) == 0 { continue; } score += b[j][k]; } } if score > result { result = score; pairs = i; } } println!("{}", result); println!("{}", (0..n).filter(|&i| ((pairs >> i) & 1) == 1).map(|i| (i+1).to_string()).collect::>().join(" ")); }