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 CPP):

Solution:
#include <bits/stdc++.h>

using namespace std;

const int N = 2e5+7;

int n, k, res;
int p[N], s[N];
set<int> st;

int main()
{
    cin >> n >> k;
    p[0] = -1;
    for (int i = 1; i <= n; ++i) {
        cin >> p[i];
        s[i] = s[i-1]+(p[i] < p[i-1]);
    }
    for (int i = 0; i < k; ++i) st.insert(p[i]);
    for (int l = 1, r = k, flag = 1; r <= n; r = (++l)+k-1) {
        if (s[r]-s[l] == 0) {
            res += flag;
            flag = 0;
        } else {
            int minv = *st.begin(), maxv = *st.rbegin();
            if (l == 1 || p[l-1] != minv || p[r] < maxv) ++res;
        }
        st.erase(p[l-1]);
        st.insert(p[r]);
    }
    cout << res << endl;
    return 0;
}