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

public class Main {

	public static void main(String [] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedOutputStream bos = new BufferedOutputStream(System.out);
		String eol = System.getProperty("line.separator");
		byte[] eolb  = eol.getBytes();
		try {
			String str = br.readLine();
			int blank = str.indexOf( " ");
			int n = Integer.parseInt(str.substring(0,blank));
			int d = Integer.parseInt(str.substring(blank+1));
			long [] seq = new long[n];
			str = br.readLine();
			int length = str.length();
			int j = 0;
			int s = 0;
			int k = 0;
			while(j<length) {
				while(j<length) {
					if(str.charAt(j) == ' ') {
						 break;
					} else {
						j++;
					}
				}
				seq[k] = Integer.parseInt(str.substring(s,j));
				j++;
				s=j;
				k++;
			}
			long add = 0;
			for(int i= 1 ; i < n ; i++) {
				if(seq[i]<=seq[i-1]) {
					long extra = seq[i-1] -seq[i];
					long a = ((extra/d) + 1 );
					seq[i] += (a*d);
					add+= a;
				}
			}
			bos.write(new Long(add).toString().getBytes());
			bos.write(eolb);
			bos.flush();
		} catch(IOException ioe) {
			ioe.printStackTrace();
		}
	}
}

	 		    		    	 			   	