#include #include #include using ll = long long; ll n,k,ans{}; std::vector a,s; std::multiset se; #define NV(v)do{printf("%s",#v);printf(" : %lld\n",(v));}while(false) void addAns(ll n){ se.insert(n); if(se.size()>k){ se.erase(--se.end()); } } int main(){ scanf("%lld%lld",&n,&k); a.resize(n+1); for(ll i=1;i<(ll)a.size();i++){ scanf("%lld",&a[i]); } s.resize(a.size()); for(ll i=1;i<(ll)s.size();i++){ s[i]=s[i-1]+a[i]; } for(ll i=1;i<(ll)s.size();i++){ for(ll j=i;j<(ll)s.size();j++){ addAns(s[j]-s[i-1]); } } for(ll i=1;i<=k;i++){ static auto it = se.begin(); ans+=*it; // NV(*it); it++; } printf("%lld\n",ans); }