#include<iostream>
#include<cstring>
#define int long long
using namespace std;
const int N = 2e5+10,M = 1e18;
int w[N],n,m;
bool check1(int x){
int s=0;
int cnt=0;
for(int i=1;i<=n;i++){
s+=w[i];
if(s>=x)s=0,cnt++;
else if(s<0)s=0;
}
return cnt<=m;
}
bool check2(int x){
int s=0;
int cnt=0;
for(int i=1;i<=n;i++){
s+=w[i];
if(s>=x)s=0,cnt++;
else if(s<0)s=0;
}
return cnt>=m;
}
bool istrue(int x){
int s=0;
int cnt=0;
for(int i=1;i<=n;i++){
s+=w[i];
if(s>=x)s=0,cnt++;
else if(s<0)s=0;
}
return cnt==m;
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>w[i];
}
int l=0,r=M;
while(l+1!=r){
int mid=l+r>>1;
if(check1(mid))r=mid;
else l=mid;
}
cout<<(istrue(r)?r:-1)<<" ";
l=0,r=M;
while(l+1!=r){
int mid=l+r>>1;
if(check2(mid))l=mid;
else r=mid;
}
cout<<(istrue(l)?l:-1);
return 0;
}