#include using namespace std; using Int = long long; const char newl = '\n'; template inline void chmin(T1 &a,T2 b){if(a>b) a=b;} template inline void chmax(T1 &a,T2 b){if(a void drop(const T &x){cout< vector read(size_t n){ vector ts(n); for(size_t i=0;i>ts[i]; return ts; } //INSERT ABOVE HERE const Int MAX = 303; const Int INF = 1e18; Int dp[MAX][2][MAX][MAX]; Int mx[MAX][MAX]; signed main(){ cin.tie(0); ios::sync_with_stdio(0); Int n,k; cin>>n>>k; auto as=read(n); vector ans(n); // start from parity for(Int p=0;p<2;p++){ // init for(Int i=0;i<=k;i++) for(Int l=0;l=0;i--){ for(Int l=0;l=1) chmax(dp[i-1][0][l-1][r],res+as[l-1]*(i-1)); if(i>=2) chmax(dp[i-2][0][l][r],res); if((r-l)<=i) chmax(dp[i-(r-l)][1][l][r],res); } if(dp[i][1][l][r]!=-INF){ Int res=dp[i][1][l][r]; if(r+1=2) chmax(dp[i-2][1][l][r],res); if((r-l)<=i) chmax(dp[i-(r-l)][0][l][r],res); } } } } for(Int w=n-1;w>=1;w--){ for(Int l=0;l+w