rt,WA
#include<bits/stdc++.h>
using namespace std;
inline int read()
{
int x=0,f=1;char c=getchar();
while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
while(isdigit(c)){x=x*10+c-48;c=getchar();}
return x*f;
}
inline void write(int x)
{
if(x>9)write(x/10);
putchar(x%10+48);
}
struct card{
int lvl;
int k;
};
const int Max=1e5+10;
int T,n,a[Max];
bool cmp(card x,card y)
{
return x.lvl>y.lvl;
}
int main()
{
T=read();
while(T--) {
vector<card> v;
bool b=false;
int c[15],num=0,t=0;
double sum=0,s=0;
n=read();
for(int i=0;i<n;i++)a[i]=read();
for(int i=0;i<n;i++) {
int op;op=read();
v.push_back({op,a[i]});
}
for(int i=1;i<=8;i++)c[i]=read(),sum+=c[i];
sort(v.begin(),v.end(),cmp);
//for(auto i:v)cout<<i.k<<' '<<i.lvl<<endl;
for(int i=0;i<n;i++) {
if(num==8)break;
if(v[i].k==2&&!b) {
s+=v[i].lvl;
num++;
b=true;
}
else if(v[i].k==3&&t<3) {
s+=v[i].lvl;
t++;
num++;
}
else if(v[i].k==1) {
s+=v[i].lvl;
num++;
}
}
sum/=8.0;
s/=8.0;
//cout<<endl<<s<<' '<<sum<<endl;
if(sum-s<=2&&t>0)cout<<"Yes\n";
else cout<<"No\n";
}
return 0;
}