use proconio::input; fn main() { input! { n: usize, k: usize, a: [i64; n], } let mut dp = vec![[i64::MIN / 2; 2]; k + 1]; let mut ndp = dp.clone(); dp[0][0] = 0; for &ai in a.iter() { ndp.fill([i64::MIN / 2; 2]); for i in 0..=k { ndp[i][0] = dp[i][0].max(dp[i][1]); } for i in 0..k { ndp[i + 1][1] = ndp[i + 1][1].max(dp[i][0] + ai); } dp.clone_from_slice(&ndp); } let ans = dp[k][0].max(dp[k][1]); if ans < -1_000_000_000_000_000 { println!("Impossible"); } else { println!("{ans}"); } }