rt
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,a[500005],pre[500005],nxt[500005][25],ans;
map<int,int> mp;
int check(int x){
mp.clear();
for(int i=1;i<=2*n;i++){
pre[i]=pre[i-1]+a[i];
mp[pre[i]]=i;
}
for(int i=1;i<=2*n;i++){
int k=mp.lower_bound(pre[i]+x)->second;
if(k>i)nxt[i][0]=k;
else nxt[i][0]=2*n;
}
for(int j=1;j<=20;j++){
for(int i=1;i<=2*n;i++){
nxt[i][j]=nxt[nxt[i][j-1]][j-1];
}
}
for(int i=1;i<=n;i++){
for(int k=20,j=i,cnt=0;;k--){
if(j>=i+n&&cnt>=m)return 1;
else if(j>=i+n)break;
if(nxt[j][k]==0||nxt[j][k]>i+n)continue;
j=nxt[j][k];cnt+=(1<<k);
}
}
return 0;
}
signed main(){
//ios::sync_with_stdio(false);
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
a[i+n]=a[i];
}
int l=1,r=1145141919810ll;
while(1){
if(l>r)break;
int mid=(l+r)/2;
if(check(mid))l=mid+1;
else r=mid-1;
}
cout<<l<<" ";
for(int i=1;i<=n;i++){
for(int k=20,j=i,cnt=0;;k--){
if(j>=i+n&&cnt>=m)ans++;
if(j>=i+n)break;
if(nxt[j][k]==0)continue;
j=nxt[j][k];cnt+=(1<<k);
}
}
cout<<n-ans;
}