using namespace std;
const int N=3e5+5;
struct xtl{
long long h,w,id;
bool operator <(const xtl s1)const{
if(w!=s1.w)return w>s1.w;
return h>s1.h;
}
}hfm[N];
priority_queue<xtl>q;
int main()
{
//freopen("P2168.in","r",stdin);
long long n,k,x,e,zdh=0,ans=0;
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>x;
hfm[i].w=x;
hfm[i].h=0;
hfm[i].id=i;
q.push(hfm[i]);
}
hfm[0].h=0;
hfm[0].w=0;
hfm[0].id=0;
for(int i=1;i<=((k-1)-(n-1)%(k-1));i++){
q.push(hfm[0]);
}
e=q.size();
for(int i=1;i<=(e-1)/(k-1);i++){
hfm[n+i].id=n+i;
xtl nd[N];
if(q.empty())break;
if(q.size()<k)break;
for(int j=1;j<=k;j++){
nd[j]=q.top();
q.pop();
hfm[e+i].w+=nd[j].w;
zdh=max(zdh,nd[j].h);
}
hfm[e+i].h=zdh;
q.push(hfm[e+i]);
ans+=hfm[e+i].w;
if(q.size()==1)break;
}
cout<<ans<<' '<<hfm[e].h;
return 0;
}