rt
#include <bits/stdc++.h>
using namespace std;
int n, k;
long long ans;
struct Node{
long long w, h;
bool operator < (const Node &a) const {
return w != a.w ? w > a.w : h > a.h;
}
Node(long long a, long long b): w(a), h(b) {}
};
int main() {
cin >> n >> k;
priority_queue<Node>heap;
for (int i = 0; i < n; i ++) {
long long a;
cin >> a;
heap.push(Node(a, 0));
}
while ((n - 1)%(k - 1)) {
heap.push(Node(0, 0));
n ++;
}
while (heap.size() >= k) {
long long w = 0, h = -1;
for (int i = 0; i < k; i ++) {
Node top = heap.top(); heap.pop();
h = max(h, top.h);
w += top.w;
}
ans += w;
heap.push(Node(w, h + 1));
}
cout << ans << '\n' << heap.top().h;
return 0;
}