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.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;


public class IncreasingSequence {
	static BufferedReader reader;
	static StringTokenizer tokenizer;
	public static void main(String[] args) throws IOException {
		reader = new BufferedReader(new InputStreamReader(System.in));
		int n = NextInt();
		int d = NextInt();
		int a[] = new int[n];
		for (int i = 0; i < n; ++i)
			a[i] = NextInt();
		int res = 0;
		for (int i = 1; i < n; ++i) {
			if (a[i] > a[i - 1]) continue;
			int need = (-a[i] + a[i - 1] + d - 1) / d;
			a[i] += need * d;
			if (a[i] <= a[i - 1]) {
				a[i] += d;
				++need;
			}
			res = res + need;
		}
		System.out.println(res);
	}
	static int NextInt() throws NumberFormatException, IOException {
		return Integer.parseInt(NextToken());
	}
	static double NextDouble() throws NumberFormatException, IOException {
		return Double.parseDouble(NextToken());
	}
	static long NextLong() throws NumberFormatException, IOException {
		return Long.parseLong(NextToken());
	}
	static String NextToken() throws IOException {
		while(tokenizer == null || !tokenizer.hasMoreTokens()) {
			tokenizer = new StringTokenizer(reader.readLine());
		}
		return tokenizer.nextToken();
	}
}
