#include <bits/stdc++.h>
using namespace std;
const int N = 200050;
typedef long long ll;
ll h[N];
ll p[N];
set<pair<ll, ll>>s, s1;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int t;
cin >> t;
while (t--) {
int n, k;
cin >> n >> k;
s.clear();
s1.clear();
for (int i = 1; i <= n; i++)
cin >> h[i];
for (int i = 1; i <= n; i++) {
cin >> p[i];
s.insert(make_pair(h[i], p[i])); //第一个集合用生命值为第一关键字。
s1.insert(make_pair(p[i], h[i])); //第二个集合用攻击力为第一关键字。
}
int x = 0;
while (!s.empty() && k > 0) {
x += k;
while (!s.empty() && (*s.begin()).first <= x) {
int l = (*s.begin()).first;
int r = (*s.begin()).second;
s.erase(s.begin());
s1.erase(s1.find(make_pair(r, l)));
}
k -= (*s1.begin()).first;
}
if (s.empty())
cout << "YES\n";
else
cout << "NO\n";
}
return 0;
}