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.BigInteger;
  
  public class _practise {
  	
  	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()); 
  		} 
  
  		 int[] ia(int n)
  		{
  			int a[]=new int[n];
  			for(int i=0;i<n;i++)a[i]=nextInt();
  			return a;
  		}
  		 int[][] ia(int n , int m)
  			{
  				int a[][]=new int[n][m];
  				for(int i=0;i<n;i++) for(int j=0;j<m ;j++) a[i][j]=nextInt();
  				return a;
  			}
  		 long[][] la(int n , int m)
  			{
  				long a[][]=new long[n][m];
  				for(int i=0;i<n;i++) for(int j=0;j<m ;j++) a[i][j]=nextLong();
  				return a;
  			}
  		 char[][] ca(int n , int m)
  			{
  				char a[][]=new char[n][m];
  				for(int i=0;i<n;i++)
  					{
  					String x =next();
  					for(int j=0;j<m ;j++) a[i][j]=x.charAt(j);
  					}
  				return a;
  			}
  
  		long[] la(int n)
  		{
  			long a[]=new long[n];
  			for(int i=0;i<n;i++)a[i]=nextLong();
  			return a;
  		}
  
  		String nextLine() 
  		{ 
  			String str = ""; 
  			try
  			{ 
  				str = br.readLine(); 
  			} 
  			catch (IOException e) 
  			{ 
  				e.printStackTrace(); 
  			} 
  			return str; 
  		} 
  	}
  	static void sort(long[] a) 
  	{int n=a.length;Random r=new Random();for (int i=0; i<a.length; i++) {long oi=r.nextInt(n), temp=a[i];a[i]=a[(int)oi];a[(int)oi]=temp;}Arrays.sort(a);}
      static void sort(int[] a) 
      {int n=a.length;Random r=new Random();for (int i=0; i<a.length; i++) {int oi=r.nextInt(n), temp=a[i];a[i]=a[oi];a[oi]=temp;}Arrays.sort(a);}
  	public static long sum(long a[])
  	{long sum=0; for(long i : a) sum+=i; return(sum);}
  	public static long count(long a[] , long x)
  	{long c=0; for(long i : a) if(i==x) c++; return(c);}
  	public static int sum(int a[])
  	{ int sum=0; for(int i : a) sum+=i; return(sum);}
  	public static int count(int a[] ,int x)
  	{int c=0; for(int i : a) if(i==x) c++; return(c);}
  	public static int count(String s ,char ch)
  	{int c=0; char x[] = s.toCharArray(); for(char i : x) if(ch==i) c++; return(c);}
  	public static boolean prime(int n)
  	{for(int i=2 ; i<=Math.sqrt(n) ; i++) if(n%i==0) return false; return true;}
  	public static boolean prime(long n)
  	{for(long i=2 ; i<=Math.sqrt(n) ; i++) if(n%i==0) return false; return true;}
  	 public static int gcd(int n1, int n2)
  	  { if (n2 != 0)return gcd(n2, n1 % n2); else return n1;}
  	 public static long gcd(long n1, long n2)
  	  { if (n2 != 0)return gcd(n2, n1 % n2); else return n1;}
  	 public static int[] freq(int a[], int n)
  	  { int f[]=new int[n+1]; for(int i:a) f[i]++; return f;}
  	 public static int[] pos(int a[], int n)
  	  { int f[]=new int[n+1]; for(int i=0; i<n ;i++) f[a[i]]=i; return f;}
  	 
  	
  	 public static long mindig(long n)
  	 {
  		 long ans=9; while(n>0) { if(n%10<ans) ans=n%10; n/=10; }
  		 return ans;
  	 }
  	 public static long maxdig(long n)
  	 {
  		 long ans=0; while(n>0) { if(n%10>ans) ans=n%10; n/=10; }
  		 return ans;
  	 }
  	  
  	public static boolean palin(String s)
  	{
  		StringBuilder sb = new StringBuilder();
  		sb.append(s);
  		String str=String.valueOf(sb.reverse());
  		if(s.equals(str))
  			return true;
  		else return false;
  	}
  	
  	
  	public static void main(String args[])
  	{
  
  		FastReader in=new FastReader();
  		PrintWriter so = new PrintWriter(new BufferedWriter(new  OutputStreamWriter(System.out)));
  		_practise ob = new _practise();
  		
  	    
  		int T = in.nextInt();
  		//int T = 1;
  	   
  	  
  	     while(T-->0)
  		 {
  	    	int n = in.nextInt();
  	    	int k = in.nextInt();
  	    	
  	    	long a[] = in.la(n);
  	    	Map<Long,Integer> hm = new HashMap<Long, Integer>(); 
  	    	long f[] = a.clone();
  	    	sort(f);
  	    	for(int i=0 ; i<n ; i++)
  	    	{
  	    		hm.put(f[i], i);
  	    	}
  	    	int ans=0;
  	    	for(int i=0 ; i<n ; )
  	    		{
  	    	       int p=hm.get(a[i]);
  	    	       while(i<n && p<n && a[i]==f[p])
  	    	       {
  	    	    	   i++;
  	    	    	   p++;
  	    	       }
  	    	       ans++;
  	    	    //   so.println(i+" "+p);
  	    		}
  	    	//so.println(ans+" ");
  	    	if(ans<=k) so.println("YES");
  	    	else so.println("NO");
  	    	
  		 }
  	    
  		
  		so.flush();
  
  		
  		/*String s = in.next();
  		 * Arrays.stream(f).min().getAsInt()
  		 * BigInteger f = new BigInteger("1"); 1 ke jagah koi bhi value ho skta jo aap 
  		 *                                       initial value banan chahte
  			int a[] = new int[n];
  			 Stack<Integer> stack = new Stack<Integer>();
  			Deque<Integer> q = new LinkedList<>(); or Deque<Integer> q = new ArrayDeque<Integer>();
  			PriorityQueue<Long> pq = new PriorityQueue<Long>();
  			ArrayList<Integer> al = new ArrayList<Integer>(); 
  			StringBuilder sb = new StringBuilder();
  			HashSet<Integer> st = new LinkedHashSet<Integer>();
  			Set<Integer> s = new HashSet<Integer>();
  			Map<Long,Integer> hm = new HashMap<Long, Integer>(); //<key,value>
  			 for(Map.Entry<Integer, Integer> i :hm.entrySet())
  			HashMap<Integer, Integer> hmap = new HashMap<Integer, Integer>();
  			so.println("HELLO");
  			Arrays.sort(a,Comparator.comparingDouble(o->o[0]))
  			 Arrays.sort(a, (aa, bb) -> Integer.compare(aa[1], bb[1]));
  			 Set<String> ts = new TreeSet<>();*/
  	}
  }