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.*;
import java.math.*;
import static java.lang.Math.*;

public class Main {

	private void solve() throws Exception {
		int n = nextInt(), d = nextInt();
		int [] a = new int [n];
		for (int i = 0; i < n; i++) a[i] = nextInt();
		int count = 0;
		for(int i = 1; i < n; i++)
			if (a[i] <= a[i-1]){
				int diff = a[i-1] - a[i] + 1;
				int res = diff%d > 0 ? 1 : 0;
				res += diff/d;
				a[i] += res*d;
				count+=res;
			}
		out.println(count);
	}
	
	
	

	BufferedReader in;
	StringTokenizer st;
	PrintWriter out;

	private String next() throws Exception {
		if (st == null || !st.hasMoreElements())
			st = new StringTokenizer(in.readLine());
		return st.nextToken();
	}

	private int nextInt() throws Exception {
		return Integer.parseInt(next());
	}

	private long nextLong() throws Exception {
		return Long.parseLong(next());
	}

	private double nextDouble() throws Exception {
		return Double.parseDouble(next());
	}

	public void run() throws Exception {
		in = new BufferedReader(new InputStreamReader(System.in));
		out = new PrintWriter(new OutputStreamWriter(System.out));
		solve();
		out.close();
	}

	public static void main(String... strings) throws Exception {
		new Main().run();
	}
}
