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>
#define int long long
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
using namespace std;
constexpr int MOD = 1000000007;
constexpr int INF = numeric_limits<int>::max() / 2;
typedef pair<int,int> P;
using Graph = vector<vector<int>>;


signed main(){
	cin.tie(nullptr);
	ios::sync_with_stdio(false);

	int N, K;
	cin >> N >> K;
	int A[N];
	int ans = 1;
	rep(i,N){
		cin >> A[i];
	}
	set<int> st;
	rep(i,K){
		st.insert(A[i]);
	}
	for(int i=K;i<N;i++){
		int Q = *st.begin();
		int W = *(--st.end());
		if(Q == A[i-K] && W < A[i]) ans += 0;
		else ++ans;
		st.erase(A[i-K]);
		st.insert(A[i]);
		// cout << W << endl;
	}

	int cnt = 1, wer = 0;
	for(int i=1;i<N;i++){
		if(A[i-1] < A[i]){
			cnt++;
		}
		else{
			cnt = 1;
		}
		if(cnt == K) wer++;
	}
	if(wer >= 1) ans -= wer-1; 
	// cout << ans << endl;
	// cout << *st.begin() << endl;
	cout << ans << endl;
}