#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
long long int t,n,q,i,count,j,k,w,index,v;
//cin>>t;
scanf("%lld",&t);
while(t--)
{
//cin>>n>>q;
scanf("%lld %lld",&n,&q);
vector<long long int> a(n),b(n);
for(i=0;i<n;i++)
scanf("%lld",&a[i]);//cin>>a[i];
sort(a.begin(),a.end());
//Sorting to reduce work
b=a;
reverse(b.begin(),b.end());
//reversing because it is easier imagining to skip some elements in the start
w=n; //a backup because i will modify 'n'
for(i=0;i<q;i++)
{
n=w; //re-storing value of 'n' before ever query
count=0;//initialising count
cin>>k;
index=n-((lower_bound(a.begin(),a.end(),k))-a.begin());
/*
finding the first value that is not less than k
i.e if array 'a' which is in increasing order is 1 2 2 5
k=5 will return 3
k=2 will return 1
k=3 will return 2
Then index of next smaller value is calculated for array b using n-lower_bound
*/
count+=(index);//adding the number of values greater than k
for(j=index;j<n ;j++)
{
v=k-b[j];//calculating the difference
if(v<=n-j-1)//checking if that number of elements are available
{
//cout<<"\nhere \n";
n=n-(v);//if available , they are removed from array(reducing n we won't access them)
count++;
}
else
break;
}
printf("%lld\n",count);//cout<<count<<"\n";
}
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgbWFpbigpCnsKICAgIGxvbmcgbG9uZyBpbnQgdCxuLHEsaSxjb3VudCxqLGssdyxpbmRleCx2OwogICAgLy9jaW4+PnQ7CiAgICBzY2FuZigiJWxsZCIsJnQpOwogICAgd2hpbGUodC0tKQogICAgewogICAgICAgIC8vY2luPj5uPj5xOwogICAgICAgIHNjYW5mKCIlbGxkICVsbGQiLCZuLCZxKTsKICAgICAgICB2ZWN0b3I8bG9uZyBsb25nIGludD4gYShuKSxiKG4pOwogICAgICAgIGZvcihpPTA7aTxuO2krKykKICAgICAgICAgICAgc2NhbmYoIiVsbGQiLCZhW2ldKTsvL2Npbj4+YVtpXTsKICAgICAgICBzb3J0KGEuYmVnaW4oKSxhLmVuZCgpKTsKICAgICAgICAvL1NvcnRpbmcgdG8gcmVkdWNlIHdvcmsKICAgICAgICBiPWE7CiAgICAgICAgcmV2ZXJzZShiLmJlZ2luKCksYi5lbmQoKSk7CiAgICAgICAgLy9yZXZlcnNpbmcgYmVjYXVzZSBpdCBpcyBlYXNpZXIgaW1hZ2luaW5nIHRvIHNraXAgc29tZSBlbGVtZW50cyBpbiB0aGUgc3RhcnQKICAgICAgICB3PW47IC8vYSBiYWNrdXAgYmVjYXVzZSBpIHdpbGwgbW9kaWZ5ICduJwogICAgICAgIGZvcihpPTA7aTxxO2krKykKICAgICAgICB7CiAgICAgICAgICAgIG49dzsgLy9yZS1zdG9yaW5nIHZhbHVlIG9mICduJyBiZWZvcmUgZXZlciBxdWVyeQogICAgICAgICAgICBjb3VudD0wOy8vaW5pdGlhbGlzaW5nIGNvdW50CiAgICAgICAgICAgIGNpbj4+azsKICAgICAgICAgICAgaW5kZXg9bi0oKGxvd2VyX2JvdW5kKGEuYmVnaW4oKSxhLmVuZCgpLGspKS1hLmJlZ2luKCkpOyAKICAgICAgICAgICAgLyoKICAgICAgICAgICAgZmluZGluZyB0aGUgZmlyc3QgdmFsdWUgdGhhdCBpcyBub3QgbGVzcyB0aGFuIGsKICAgICAgICAgICAgaS5lIGlmIGFycmF5ICdhJyB3aGljaCBpcyBpbiBpbmNyZWFzaW5nIG9yZGVyIGlzIDEgMiAyIDUKICAgICAgICAgICAgaz01IHdpbGwgcmV0dXJuIDMKICAgICAgICAgICAgaz0yIHdpbGwgcmV0dXJuIDEKICAgICAgICAgICAgaz0zIHdpbGwgcmV0dXJuIDIKICAgICAgICAgICAgCiAgICAgICAgICAgIFRoZW4gaW5kZXggb2YgbmV4dCBzbWFsbGVyIHZhbHVlIGlzIGNhbGN1bGF0ZWQgZm9yIGFycmF5IGIgdXNpbmcgbi1sb3dlcl9ib3VuZAogICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgY291bnQrPShpbmRleCk7Ly9hZGRpbmcgdGhlIG51bWJlciBvZiB2YWx1ZXMgZ3JlYXRlciB0aGFuIGsKICAgICAgICAgICAgZm9yKGo9aW5kZXg7ajxuIDtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHY9ay1iW2pdOy8vY2FsY3VsYXRpbmcgdGhlIGRpZmZlcmVuY2UKICAgICAgICAgICAgICAgICAgICBpZih2PD1uLWotMSkvL2NoZWNraW5nIGlmIHRoYXQgbnVtYmVyIG9mIGVsZW1lbnRzIGFyZSBhdmFpbGFibGUKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9jb3V0PDwiXG5oZXJlIFxuIjsKICAgICAgICAgICAgICAgICAgICBuPW4tKHYpOy8vaWYgYXZhaWxhYmxlICwgdGhleSBhcmUgcmVtb3ZlZCBmcm9tIGFycmF5KHJlZHVjaW5nIG4gd2Ugd29uJ3QgYWNjZXNzIHRoZW0pCiAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIAlicmVhazsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICB9CiAgICAgICAgICAgIHByaW50ZigiJWxsZFxuIixjb3VudCk7Ly9jb3V0PDxjb3VudDw8IlxuIjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgCiAgICB9Cn0=