#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
const long long INF = 1E18;
const double EPS = 1E-10;
template <class T>
T ckmin(T& a, T b) {
  return a = min(a, b);
}
template <class T>
T ckmax(T& a, T b) {
  return a = max(a, b);
}
namespace input {
template <class T1, class T2>
void re(pair<T1, T2>& p);
template <class T>
void re(vector<T>& a);
template <class T>
void re(T& x) {
  cin >> x;
}
void re(double& x) {
  string t;
  re(t);
  x = stod(t);
}
template <class A, class... As>
void re(A& head, As&... tail) {
  re(head);
  re(tail...);
}
template <class T1, class T2>
void re(pair<T1, T2>& p) {
  re(p.first, p.second);
}
template <class T>
void re(vector<T>& a) {
  for (int i = (0); i < (((int)(a).size())); i++) re(a[i]);
}
}  // namespace input
using namespace input;
namespace output {
template <class T1, class T2>
void pr(const pair<T1, T2>& x);
template <class T>
void pr(const vector<T>& x);
template <class T>
void pr(const set<T>& x);
template <class T1, class T2>
void pr(const map<T1, T2>& x);
template <class T>
void pr(const T& x) {
  cout << x;
}
template <class A, class... As>
void pr(const A& head, const As&... tail) {
  pr(head);
  pr(tail...);
}
template <class T1, class T2>
void pr(const pair<T1, T2>& x) {
  pr("{", x.first, ", ", x.second, "}");
}
template <class T>
void prc(const T& x) {
  pr("{");
  bool fi = 1;
  for (auto& a : x) pr(!fi ? ", " : "", a), fi = 0;
  pr("}");
}
template <class T>
void pr(const vector<T>& x) {
  prc(x);
}
template <class T>
void pr(const set<T>& x) {
  prc(x);
}
template <class T1, class T2>
void pr(const map<T1, T2>& x) {
  prc(x);
}
void ps() { pr("\n"); }
template <class A, class... As>
void ps(const A& head, const As&... tail) {
  pr(head, " ");
  ps(tail...);
}
}  // namespace output
using namespace output;
inline int cmp(double x, double y = 0, double tol = EPS) {
  return (x <= y + tol) ? (x + tol < y) ? -1 : 0 : 1;
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(0);
  int n, k;
  re(n, k);
  vector<int> a(n);
  re(a);
  int d = 0;
  long long ret = 0;
  for (int i = (0); i < (n); i++) {
    if (d + a[i] < k)
      ret += d > 0, d = d > 0 ? 0 : a[i];
    else
      ret += (d + a[i]) / k, d = (d + a[i]) % k;
  }
  ret += d > 0;
  pr(ret);
}
