use proconio::input; const INF: i64 = 1 << 60; fn main() { input! { n: usize, k: usize, a: [i64; n], } let mut dp = vec![vec![-INF; 2]; k + 1]; dp[0][0] = 0; for &a_i in &a { let mut next_dp = vec![vec![-INF; 2]; k + 1]; for j in 0..=k { next_dp[j][0] = next_dp[j][0].max(dp[j][0]).max(dp[j][1]); if j < k && dp[j][0] != -INF { next_dp[j + 1][1] = next_dp[j + 1][1].max(dp[j][0] + a_i); } } dp = next_dp; } let ans = dp[k][0].max(dp[k][1]); if ans == -INF { println!("Impossible"); } else { println!("{}", ans); } }