#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <complex>
#include <algorithm>
#include <climits>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <iomanip>
#define
#define
using namespace std;
typedef long long ll;
int n, k, a[A];
bool check1(ll x, ll sum = 0, int tot = 0) {
for (int i = 1; i <= n; i++) {
sum += a[i];
if (sum < 0) sum = 0;
if (sum >= x) sum = 0, tot++;
}
return tot > k;
}
bool check2(ll x, ll sum = 0, int tot = 0) {
for (int i = 1; i <= n; i++) {
sum += a[i];
if (sum < 0) sum = 0;
if (sum >= x) sum = 0, tot++;
}
return tot < k;
}
int main(int argc, char const *argv[]) {
cin >> n >> k;
for (int i = 1; i <= n; i++) cin >> a[i];
/*-----------------min------------------*/
ll l = 0, r = 1e16;
while (l <= r) {
ll m = (l + r) >> 1;
if (check1(m)) l = m + 1;
else r = m - 1;
}
/*-----------------min-------------------*/
ll c = 0, b = 0;
for (int i = 1; i <= n; i++) {
c += a[i];
if (c < 0) c = 0;
if (c >= l) c = 0, b++;
}
if (b != k) return puts("-1"), 0;
if (l) cout << l << " ";
else cout << 1 << " ";
/*-----------------max------------------*/
l = 0, r = 1e16;
while (l <= r) {
ll m = (l + r) >> 1;
if (check2(m)) r = m - 1;
else l = m + 1;
}
cout << r << endl;
/*-----------------max-------------------*/
}