#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,a[500005],pre[500005],nxt[500005][25]={0},ans;
map<int,int> mp;
int check(int x){
for(int i=1;i<=2*n;i++){
int k=mp.lower_bound(pre[i-1]+x)->second;
if(pre[k]-pre[i-1]>=x)nxt[i][0]=k+1;
else nxt[i][0]=0;
}
for(int j=1;j<=20;j++){
for(int i=1;i<=2*n;i++){
if(!nxt[i][j-1])nxt[i][j]=0;
else nxt[i][j]=nxt[nxt[i][j-1]][j-1];
}
}
for(int i=1;i<=n;i++){
for(int k=20,j=i;k>=0;k--){
if(m&(1<<k))j=nxt[j][k];
if(j&&k==0&&j<=i+n)return 1;
}
}
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];
}
for(int i=1;i<=2*n;i++){
pre[i]=pre[i-1]+a[i];
mp[pre[i]]=i;
}
int l=1,r=1145141919810ll,mid;
while(1){
if(l>r)break;
mid=(l+r)/2;
if(check(mid))l=mid+1;
else r=mid-1;
}
cout<<mid<<" ";
for(int i=1;i<=n;i++){
for(int k=20,j=i;k>=0;k--){
if(m&(1<<k))j=nxt[j][k];
if(j&&k==0&&j<=i+n)ans++;
}
}
cout<<n-ans;
}