fn main() { let nk = input(); let mut nk = nk.split(' '); let n: usize = nk.next().unwrap().parse().unwrap(); let k: usize = nk.next().unwrap().parse().unwrap(); let a = input(); let a: Vec = a.split(' ').map(|ai| ai.parse().unwrap()).collect(); let mut stack = Vec::new(); let mut s = vec![0; k]; let mut ans = 0usize; for p in 0..n { stack.push((false, 0, 0)); stack.push((true, 0, p)); } while let Some((cf, ci, cx)) = stack.pop() { if cf { s[ci] = cx; if ci == k - 1 { let sm: usize = s.iter().map(|&xi| a[xi]).sum(); if sm % 998244353 <= sm % 998 { ans += 1; } }else { for nx in cx+1..n { stack.push((false, ci + 1, 0)); stack.push((true, ci + 1, nx)); } } }else { s[ci] = 0; } } println!("{}", ans % 998); } fn input() -> String { let mut buffer = String::new(); std::io::stdin().read_line(&mut buffer).unwrap(); return buffer.trim().to_string(); }