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.util.ArrayList;
import java.util.Scanner;
import java.util.stream.*;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int n=0, d=0;
		ArrayList<Integer> container=new ArrayList<Integer>();
		Scanner scn=new Scanner(System.in);
		n=scn.nextInt();
		d=scn.nextInt();
		//I method
		for(int i=0; i<n; i++)
			container.add(scn.nextInt());
		//method II
		//container=(ArrayList<Integer>) Stream.of(scn.nextLine().split(" ")).map(Integer::parseInt).collect(Collectors.toList());
		
		scn.close();
		
	/*	System.out.print("n=" + n + "  d= " +d);
		System.out.println();
		System.out.print(container);
*/      
		
		int ans=0;
		for(int i=0; i<n-1; i++) {
			if(container.get(i)>=container.get(i+1)) {
				//I method
				/*while(container.get(i)>=container.get(i+1)) {
					int item = container.get(i+1)+d;
					 container.set(i+1,item);
					 ans++;
				}
				//end while loop
				*/		
			//method II
				int difference=container.get(i)-container.get(i+1);
				int required_d=difference/d+1;
				container.set(i+1, container.get(i+1)+required_d*d);
				ans+=required_d;
				
	}			
			
		}
			//and for loop
		System.out.println(ans);
		
	}

}
