import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.InputMismatchException;
import java.io.IOException;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 *
 * @author noone
 */
public class Main {
        public static void main(String[] args) {
                InputStream inputStream = System.in;
                OutputStream outputStream = System.out;
                InputReader in = new InputReader(inputStream);
                PrintWriter out = new PrintWriter(outputStream);
                TaskD solver = new TaskD();
                solver.solve(1, in, out);
                out.close();
        }

        static class TaskD {
                public void solve(int testNumber, InputReader in, PrintWriter out) {
                        int n = in.i();
                        long k = in.l();
                        boolean[] added = new boolean[n];
                        long[] a = in.la(n);
                        long numberOfBags = 0;
                        for (int i = 0; i < n - 1; i++) {
                                if (i == 0) {
                                        numberOfBags += a[i] / k;
                                        a[i + 1] += a[i] % k;
                                        if (a[i] % k != 0) added[i + 1] = true;
                                } else {
                                        if (a[i] <= k && !added[i]) {
                                                numberOfBags = a[i] == 0 ? numberOfBags : numberOfBags + 1;
                                        } else {
                                                numberOfBags += a[i] / k;
                                                a[i + 1] += a[i] % k;
                                                if (a[i] % k != 0) added[i + 1] = true;
                                        }
                                }
                        }
                        numberOfBags = a[n - 1] == 0 ? numberOfBags : numberOfBags + (a[n - 1] + k - 1) / k;
                        out.println(numberOfBags);
                }

        }

        static class InputReader {
                InputStream is;
                private byte[] inbuf = new byte[1024];
                public int lenbuf = 0;
                public int ptrbuf = 0;

                public InputReader(InputStream is) {
                        this.is = is;
                }

                private int readByte() {
                        if (lenbuf == -1) throw new InputMismatchException();
                        if (ptrbuf >= lenbuf) {
                                ptrbuf = 0;
                                try {
                                        lenbuf = is.read(inbuf);
                                } catch (IOException e) {
                                        throw new InputMismatchException();
                                }
                                if (lenbuf <= 0) return -1;
                        }
                        return inbuf[ptrbuf++];
                }

                public long[] la(int n) {
                        long[] a = new long[n];
                        for (int i = 0; i < n; i++) a[i] = l();
                        return a;
                }

                public int i() {
                        int num = 0, b;
                        boolean minus = false;
                        while ((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-')) ;
                        if (b == '-') {
                                minus = true;
                                b = readByte();
                        }

                        while (true) {
                                if (b >= '0' && b <= '9') {
                                        num = num * 10 + (b - '0');
                                } else {
                                        return minus ? -num : num;
                                }
                                b = readByte();
                        }
                }

                public long l() {
                        long num = 0;
                        int b;
                        boolean minus = false;
                        while ((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-')) ;
                        if (b == '-') {
                                minus = true;
                                b = readByte();
                        }

                        while (true) {
                                if (b >= '0' && b <= '9') {
                                        num = num * 10 + (b - '0');
                                } else {
                                        return minus ? -num : num;
                                }
                                b = readByte();
                        }
                }

        }
}

