#include <bits/stdc++.h>
using namespace std;
long n, k, ar[200000];
long long reach[777777];
long long q;
long long ans[777777];
multiset<long long> bst;
multiset<long long>::iterator it;
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n >> k;
  for (int i = 1; i <= n; i++) cin >> ar[i];
  reach[0] = 1;
  for (int i = 1; i <= 666666; i++) reach[i] = 0;
  for (int i = 1; i <= n; i++)
    for (int j = 555555; j + 1; --j)
      if (reach[j]) reach[j + ar[i]] = 1;
  ans[0] = 0;
  bst.insert(0);
  for (int i = 1; i <= 666666; i++) {
    ans[i] = 1e18;
    if (i > k && ans[i - k - 1] < 1e18) {
      it = bst.find(ans[i - k - 1]);
      bst.erase(it);
    }
    if (reach[i] == 0) continue;
    if (bst.size() == 0) continue;
    it = bst.begin();
    q = (*it);
    ans[i] = q + 1;
    bst.insert(ans[i]);
  }
  q = 666666;
  while (ans[q] > 1e17) --q;
  cout << q << " " << ans[q] << endl;
  cin.get();
  cin.get();
  return 0;
}
