#include <bits/stdc++.h>
#include <iostream>
// #include <sys/resource.h>
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
using namespace std;
// using namespace chrono;
// using namespace __gnu_pbds;
// def
// Speed
#define Code ios_base::sync_with_stdio(false);
#define By cin.tie(NULL);
#define Asquare cout.tie(NULL);
// Aliases
using ll = long long;
using lld = long double;
using ull = unsigned long long;
// Constants
const lld pi = 3.141592653589793238;
const ll INF = LONG_LONG_MAX;
const ll mod = 1e9 + 7;
// TypeDEf
typedef pair<ll, ll> pll;
typedef vector<ll> vll;
typedef vector<pll> vpll;
typedef vector<string> vs;
typedef unordered_map<ll, ll> umll;
typedef map<ll, ll> mll;
// Macros
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
#define fl(i, n) for (int i = 0; i < n; i++)
#define rl(i, m, n) for (int i = n; i >= m; i--)
#define py cout << "YES\n";
#define pm cout << "-1\n";
#define pn cout << "NO\n";
#define vr(v) v.begin(), v.end()
#define rv(v) v.end(), v.begin()
// Operator overloads
template <typename T1, typename T2> // cin >> pair<T1, T2>
istream &operator>>(istream &istream, pair<T1, T2> &p)
{
return (istream >> p.first >> p.second);
}
template <typename T> // cin >> vector<T>
istream &operator>>(istream &istream, vector<T> &v)
{
for (auto &it : v)
cin >> it;
return istream;
}
template <typename T1, typename T2> // cout << pair<T1, T2>
ostream &operator<<(ostream &ostream, const pair<T1, T2> &p)
{
return (ostream << p.first << " " << p.second);
}
template <typename T> // cout << vector<T>
ostream &operator<<(ostream &ostream, const vector<T> &c)
{
for (auto &it : c)
cout << it << " ";
return ostream;
}
// Utility functions
template <typename T>
void print(T &&t) { cout << t << "\n"; }
void printarr(ll arr[], ll n)
{
fl(i, n) cout << arr[i] << " ";
cout << "\n";
}
template <typename T>
void printvec(vector<T> v)
{
ll n = v.size();
fl(i, n) cout << v[i] << " ";
cout << "\n";
}
template <typename T>
ll sumvec(vector<T> v)
{
ll n = v.size();
ll s = 0;
fl(i, n) s += v[i];
return s;
}
// Mathematical functions
ll gcd(ll a, ll b)
{
if (b == 0)
return a;
return gcd(b, a % b);
} //__gcd
ll lcm(ll a, ll b) { return (a / gcd(a, b) * b); }
ll moduloMultiplication(ll a, ll b, ll mod)
{
ll res = 0;
a %= mod;
while (b)
{
if (b & 1)
res = (res + a) % mod;
b >>= 1;
}
return res;
}
ll powermod(ll x, ll y, ll p)
{
ll res = 1;
x = x % p;
if (x == 0)
return 0;
while (y > 0)
{
if (y & 1)
res = (res * x) % p;
y = y >> 1;
x = (x * x) % p;
}
return res;
}
// Graph-dfs
// bool gone[MN];
// vector<int> adj[MN];
// void dfs(int loc){
// gone[loc]=true;
// for(auto x:adj[loc])if(!gone[x])dfs(x);
// }
// Sorting
bool sorta(const pair<int, int> &a, const pair<int, int> &b) { return (a.second < b.second); }
bool sortd(const pair<int, int> &a, const pair<int, int> &b) { return (a.second > b.second); }
// Bits
string decToBinary(int n)
{
string s = "";
int i = 0;
while (n > 0)
{
s = to_string(n % 2) + s;
n = n / 2;
i++;
}
return s;
}
ll binaryToDecimal(string n)
{
string num = n;
ll dec_value = 0;
int base = 1;
int len = num.length();
for (int i = len - 1; i >= 0; i--)
{
if (num[i] == '1')
dec_value += base;
base = base * 2;
}
return dec_value;
}
// Check
bool isPrime(ll n)
{
if (n <= 1)
return false;
if (n <= 3)
return true;
if (n % 2 == 0 || n % 3 == 0)
return false;
for (int i = 5; i * i <= n; i = i + 6)
if (n % i == 0 || n % (i + 2) == 0)
return false;
return true;
}
bool isPowerOfTwo(int n)
{
if (n == 0)
return false;
return (ceil(log2(n)) == floor(log2(n)));
}
bool isPerfectSquare(ll x)
{
if (x >= 0)
{
ll sr = sqrt(x);
return (sr * sr == x);
}
return false;
}
int NCR(int n, int r)
{
if (r == 0)
return 1;
/*
Extra computation saving for large R,
using property:
N choose R = N choose (N-R)
*/
if (r > n / 2)
return NCR(n, n - r);
long res = 1;
for (int k = 1; k <= r; ++k)
{
res *= n - k + 1;
res /= k;
}
return res;
}
// Function for transpose of matrix
bool chk(vector<int>v, int k)
{ int cnt=0;
for (int i = 0; i < v.size(); i++)
{
/* code */
if (((k%v[i])==0)&& (k!=v[i]))
{
/* code */
++cnt;
}
}
if (cnt==2)
{
/* code */
return true;
}
else{
return false;
}
}
// Code
int getMaxLength(vector<int>arr, int n)
{
int count = 0; //initialize count
int result = 0; //initialize max
for (int i = 0; i < n; i++)
{
// Reset count when 0 is found
if (arr[i] == 0)
count = 0;
// If 1 is found, increment count
// and update result if count becomes
// more.
else
{
count++;//increase count
result = max(result, count);
}
}
return result;
}
void solve()
{
ll n,k;
cin>>n>>k;
ll arr[n];
for (int i = 0; i < n; i++)
{
/* code */
cin>>arr[i];
}
ll cnt=0;
for (int i = 1; i < n; i++)
{
/* code */
if (arr[i]<arr[i-1])
{
/* code */
++cnt;
}
}
++cnt;
if (cnt<=k)
{
/* code */
cout<<"YES"<<endl;
}
else{
cout<<"NO"<<endl;
}
}
// Main
int main()
{
ll tc = 1;
cin >> tc;
fl(i, tc)
{
solve();
}
// fl(i,t) //Kickstart
// {
// cout<<"Case #"<<i+1<<": ";
// cout<<"\n";
// }
return 0;
}
/*
6
9 6 8 4 5 2
9 1 5 6 8 1
5
6 11
6 12
6 13
6 14
6 15
*/