A sequence a0, a1, ..., at - 1 is called increasing if ai - 1 < ai for each i: 0 < i < t.

You are given a sequence b0, b1, ..., bn - 1 and a positive integer d. In each move you may choose one element of the given sequence and add d to it. What is the least number of moves required to make the given sequence increasing?

Input

The first line of the input contains two integer numbers n and d (2 ≤ n ≤ 2000, 1 ≤ d ≤ 106). The second line contains space separated sequence b0, b1, ..., bn - 1 (1 ≤ bi ≤ 106).

Output

Output the minimal number of moves needed to make the sequence increasing.

Examples

Input

4 2
1 3 3 2


Output

3
import java.io.*;
import java.util.*;

public class Main {
    StreamTokenizer in;
	//BufferedReader in;
	PrintWriter out;

	public static void main(String[] args) throws IOException {
		new Main().run();
	}

	public void run() throws IOException {

        //in = new StreamTokenizer(new BufferedReader(new FileReader("input.txt")));
		//in = new BufferedReader(new FileReader("input.txt"));

        in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));

		//in = new BufferedReader(new InputStreamReader(System.in));
		out = new PrintWriter(new OutputStreamWriter(System.out));

        //out = new PrintWriter(new FileWriter("output.txt"));

        solve();

        out.flush();
    }

    void solve() throws IOException {
        int n = ni();
        int d = ni();
        long ret = 0;
        long prev = 0;
        for(int i = 0; i < n; i++) {
            long a = ni();
            if(a <= prev) {
                a = prev - a;
                long k = a / d + 1;
                ret += k;
                prev += d * k - (a);
            }
            else prev = a;
        }
        out.print(ret);
    }

    int ni() throws IOException {
        in.nextToken(); return (int)in.nval;
    }
}