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
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MN = 200200;
set<ll> se;
ll w[MN],st[MN];
int main() {
	ios::sync_with_stdio(0);cin.tie(0);
	int n,k;
	cin >> n >> k;
	for(int i=0;i<n;i++) {
		cin >> w[i];
	}
	int rv = 0;
	for(int i=0;i<n;i++) {
		if(w[i] <= w[i-1]) {rv = 0;}
		rv++;
		st[i] = rv;
	}
	ll tot = 0;
	for(int i=0;i<k;i++) {
		se.insert(w[i]);
	}
	int ns = 0;
	if(st[k-1] >= k) {
		ns = 1;
	} else {
		tot++;
	}
	for(int i=k;i<n;i++) {
		ll ov = w[i-k];
		ll nv = w[i];
		if(st[i] >= k) {
			ns = 1;
		} else {
			if(!(*se.begin() == ov) || !(*se.rbegin() < nv)) {
				tot++;
			}
		}
		se.erase(ov);
		se.insert(nv);
	}
	cout << tot+ns << '\n';
}