description: Moamen has an array of n distinct integers. He wants to sort that array in non-decreasing order by doing the following operations in order exactly once:
  
    1. Split the array into exactly k non-empty subarrays such that each element belongs to exactly one subarray. 
    2. Reorder these subarrays arbitrary. 
    3. Merge the subarrays in their new order. 
  
  
  
  A sequence a is a subarray of a sequence b if a can be obtained from b by deletion of several (possibly, zero or all) elements from the beginning and several (possibly, zero or all) elements from the end.
  
  Can you tell Moamen if there is a way to sort the array in non-decreasing order using the operations written above?
  
  Input
  
  The first line contains a single integer t (1 ≤ t ≤ 10^3) — the number of test cases. The description of the test cases follows.
  
  The first line of each test case contains two integers n and k (1 ≤ k ≤ n ≤ 10^5).
  
  The second line contains n integers a_1, a_2, …, a_n (0 ≤ |a_i| ≤ 10^9). It is guaranteed that all numbers are distinct.
  
  It is guaranteed that the sum of n over all test cases does not exceed 3⋅10^5.
  
  Output
  
  For each test case, you should output a single string.
  
  If Moamen can sort the array in non-decreasing order, output "YES" (without quotes). Otherwise, output "NO" (without quotes).
  
  You can print each letter of "YES" and "NO" in any case (upper or lower).
  
  Example
  
  Input
  
  
  3
  5 4
  6 3 4 2 1
  4 2
  1 -4 0 -2
  5 1
  1 2 3 4 5
  
  
  Output
  
  
  Yes
  No
  Yes
  
  Note
  
  In the first test case, a = [6, 3, 4, 2, 1], and k = 4, so we can do the operations as follows: 
  
    1. Split a into \{ [6], [3, 4], [2], [1] \}. 
    2. Reorder them: \{ [1], [2], [3,4], [6] \}. 
    3. Merge them: [1, 2, 3, 4, 6], so now the array is sorted. 
  
  
  
  In the second test case, there is no way to sort the array by splitting it into only 2 subarrays.
  
  As an example, if we split it into \{ [1, -4], [0, -2] \}, we can reorder them into \{ [1, -4], [0, -2] \} or \{ [0, -2], [1, -4] \}. However, after merging the subarrays, it is impossible to get a sorted array.
solution: import java.util.*;
  import java.io.*;
  import java.math.*;
  
  public class Solution{
  	
  	static class FastReader 
      { 
          BufferedReader br; 
          StringTokenizer st; 
          public FastReader() 
          { 
              br = new BufferedReader(new
                      InputStreamReader(System.in)); 
          }  
          String next() 
          { 
              while (st == null || !st.hasMoreElements()) 
              { 
                  try
                  { 
                      st = new StringTokenizer(br.readLine()); 
                  } 
                  catch (IOException e) 
                  { 
                      e.printStackTrace(); 
                  } 
              } 
              return st.nextToken(); 
          } 
          int nextInt() 
          { 
              return Integer.parseInt(next()); 
          } 
          long nextLong() 
          { 
              return Long.parseLong(next()); 
          } 
          double nextDouble() 
          { 
              return Double.parseDouble(next()); 
          } 
          String nextLine() 
          { 
              String str = ""; 
              try
              { 
                  str = br.readLine(); 
              } 
              catch (IOException e) 
              { 
                  e.printStackTrace(); 
              } 
              return str; 
          }
          int[] nextIntArray(int n)
          {
              int arr[]=new int[n];
              for(int i=0;i<n;i++)
              {
                  arr[i]=Integer.parseInt(next());
              }
              return arr;
          }
          Integer[] nextIntegerArray(int n)
          {
              Integer arr[]=new Integer[n];
              for(Integer i=0;i<n;i++)
              {
                  arr[i]=Integer.parseInt(next());
              }
              return arr;
          }
          long[] nextLongArray(int n)
          {
              long arr[]=new long[n];
              for(int i=0;i<n;i++)
              {
                  arr[i]=Long.parseLong(next());
              }
              return arr;
          }
      } 
  	
  	/*
  	If we keep on subtracting the larger number from a smaller number gcd doesn't change. Hence, when smaller==larger (or) smaller divides larger we have our gcd=smaller.
  	*/
  	static int gcd(int larger,int smaller){
  		if(larger%smaller==0){
  			return smaller;
  		}
  		return gcd(smaller,larger%smaller);
  	}
  	
  	/*
  	This binary search would provide me with an array of three values - index of element,left bound,right bound.
  	*/
  	static int[] BinarySearch(int[] arr,int x,int l,int r,int lb,int rb){
  		int[] result;
  		if(x<arr[0]){
  			int[] re={-1,-1,0};
  			return re;
  		}
  		if(x>arr[arr.length-1]){
  			int[] re={-1,arr.length-1,-1};
  			return re;
  		}
  		if(l>r){
  			if(lb==-1){
  				lb=r;
  			}
  			if(rb==-1){
  				rb=l;
  			}
  			int[] re={-1,lb,rb};
  			return re;
  		}
  		if(arr[(l+r)/2]==x){
  			if(lb==-1){
  				lb=(l+r)/2;
  			}
  			if(rb==-1){
  				rb=(l+r)/2;
  			}
  			int[] re={(l+r)/2,lb,rb};
  			return re;
  		}
  		else if(arr[(l+r)/2]>x){
  			rb=(l+r)/2;
  			result=BinarySearch(arr,x,l,rb-1,lb,rb);
  		}
  		else{
  			lb=(l+r)/2;
  			result=BinarySearch(arr,x,lb+1,r,lb,rb);
  		}
  		return result;
  	}
  	
  	static class Edge{
  		int start;
  		int end;
  		Edge(int x,int y){
  			start=x;
  			end=y;
  		}
  	}
  	
  	static class EdgeSort implements Comparator<Edge>{
  		public int compare(Edge a,Edge b){
  			if(a.start-b.start==0){
  				return a.end-b.end;
  			}
  			return a.start-b.start;
  		}
  	}
  
      public static void main(String args[]) throws UnsupportedEncodingException, IOException {
          FastReader sc=new FastReader();
  		BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(java.io.FileDescriptor.out), "ASCII"), 512);
  		//Below is the code to be used when dealing file handling for input and output.
  		/*BufferedReader br = new BufferedReader(
                                 new FileReader("input.txt"));
  		PrintWriter pw=new PrintWriter(new
                  BufferedWriter(new FileWriter("output.txt")));
  		pw.flush();*/
  		int t=sc.nextInt();
  		for(int q=0;q<t;q++){
  			int n=sc.nextInt();
  			int k=sc.nextInt();
  			int required=0;
  			int[] arr=sc.nextIntArray(n);
  			Map<Integer,Integer> map=new HashMap<Integer,Integer>();
  			Integer[] temp=new Integer[n];
  			for(int i=0;i<n;i++){
  				temp[i]=arr[i];
  				map.put(arr[i],i);
  			}
  			Arrays.sort(temp);
  			for(int i=0;i<n-1;i++){
  				int index=map.get(temp[i]);
  				if(index==n-1){
  					required++;
  					continue;
  				}
  				if(arr[index+1]!=temp[i+1]){
  					required++;
  				}
  			}
  			required++;
  			if(required<=k){
  				out.write("YES");
  			}
  			else{
  				out.write("NO");
  			}
  			out.write("\n");
  			out.flush();
  		}
  		out.close();
      }
  }