#[allow(unused_imports)] use proconio::*; use std::cmp::*; use std::collections::*; use std::io::*; use std::iter::*; use std::str::FromStr; fn read() -> T { let stdin = stdin(); let stdin = stdin.lock(); let token: String = stdin .bytes() .map(|c| c.expect("failed to read char") as char) .skip_while(|c| c.is_whitespace()) .take_while(|c| !c.is_whitespace()) .collect(); token.parse().ok().expect("failed to parse token") } const Mod:u64 = 998244353; fn main() { let n:usize = read(); let mut k:u64 = read(); let mut a:Vec = (0..n).map(|_| read()).collect(); let mut f:u64 = a.into_iter().sum(); println!("{}",(rep_mul(2u64,k) * f) % Mod); } fn rep_mul(mut x: u64, mut n: u64) -> u64{ let mut ans:u64 = 1; while n > 0{ if n % 2 == 1 { ans = x * ans % Mod; } x = x * x % Mod; n = n >> 1u64; } ans }