#include<bits/stdc++.h>
using namespace std;

bool check(int N,int pos){return (bool)(N&(1LL<<pos));}
unsigned int SET(int N,int pos){return (N|(1<<pos));}
long long int dp[50010],n,k,arr[50010];

long long int go(){
    if(n==0) return 0;
    if(n==1) return 1;
    if(n==2){
        if(arr[0]>arr[1] && k){
            return 2;
        }
        else if(arr[0]>arr[1] && !k){
            return 1;
        }
        else if(arr[0]<arr[1]){
            return 2;
        }
        else if(arr[0]== arr[1]) return 2;
    }
    dp[0]=1;
    if(k && arr[0]>arr[1]) {dp[1]=2;k--;}
    if(arr[0]>arr[1] && !k) dp[1]=1;
    if(arr[0]<arr[1]) dp[1]=2;
    if(arr[0]==arr[1]) dp[1]=2;
    for(int i=2;i<n;i++){
        if(arr[i-1]>arr[i] && k) {dp[i]=dp[i-1]+1;k--;}
        else if(arr[i-1]>arr[i] && !k) dp[i]=dp[i-1];
        else if(arr[i-1]<arr[i]) dp[i]=dp[i-1]+1;
    }
    return dp[n-1];

}

int main()
{

        memset(dp,-1,sizeof(dp));

        cin>>n>>k;

        for(int i=0;i<n;i++){
            cin>>arr[i];
        }

        int tot = 0;
        for (int i = 1; i < n; i++) {
            tot += (int)(arr[i] < arr[i - 1]);
        }
        if (tot <= k) {
            printf("%d\n", n);
            return 0;
        }
        cout<<go()<<endl;

}
