Problem: Snuke has a permutation (P_0,P_1,\cdots,P_{N-1}) of (0,1,\cdots,N-1).

Now, he will perform the following operation exactly once:

* Choose K consecutive elements in P and sort them in ascending order.



Find the number of permutations that can be produced as P after the operation.

Constraints

* 2 \leq N \leq 200000
* 2 \leq K \leq N
* 0 \leq P_i \leq N-1
* P_0,P_1,\cdots,P_{N-1} are all different.
* All values in input are integers.

Input

Input is given from Standard Input in the following format:


N K
P_0 P_1 \cdots P_{N-1}


Output

Print the number of permutations that can be produced as P after the operation.

Examples

Input

5 3
0 2 1 4 3


Output

2


Input

4 4
0 1 2 3


Output

1


Input

10 4
2 0 1 3 7 5 4 6 8 9


Output

6

Solution (in JAVA):

Solution:
import java.util.Scanner;
import java.util.TreeSet;

import static java.lang.System.in;

public class Main {
	static Scanner sc = new Scanner(in);

	public static void main(String[] args) {
		int N = sc.nextInt();
		int K = sc.nextInt();
		int[] P = new int[N];
		for (int i = 0; i < N; i++) {
			P[i] = Integer.parseInt(sc.next());
		}
		boolean[] unchange = new boolean[N];
		int prev = 0;
		int unc = 0;
		for (int i = 1; i < N; i++) {
			if (P[i - 1] >= P[i]) {
				for (int j = prev; j <= i - K; j++) {
					unchange[j] = true;
					unc++;
				}
				prev = i;
			}
		}
		for (int j = prev; j <= N - K; j++) {
			unchange[j] = true;
			unc++;
		}
		TreeSet<Integer> set = new TreeSet<>();
		int ans = N - K + 1;
		for (int i = 0; i < K; i++) {
			set.add(P[i]);
		}
		for (int i = K; i < N; i++) {
			if (set.first() == P[i - K] && set.last() < P[i]) {
				if (!unchange[i - K]) {
					System.err.println(i);
					ans--;
				}
			}
			set.remove(P[i - K]);
			set.add(P[i]);
		}
		if (unc > 0) {
			ans -= unc - 1;
		}
		System.out.println(ans);
	}
}