#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
int t, n, x[N];
struct node{
int c, a;
} a[N], q[20];
bool cmp(node a, node b)
{
if (a.c != b.c)
{
return a.c < b.c;
}
return a.a < b.a;
}
bool cmp2(node a, node b)
{
return a.a > b.a;
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie();cout.tie();
cin >> t;
while (t--)
{
cin >> n;
int cnt1 = 0, cnt2 = 0, cnt3 = 0;
for (int i = 1; i <= n; i++)
{
cin >> a[i].c;
if (a[i].c == 1)
{
cnt1++;
}
else if (a[i].c == 2)
{
cnt2++;
}
else
{
cnt3++;
}
}
for (int i = 1; i <= n; i++)
{
cin >> a[i].a;
}
int sum = 0;
for (int i = 1; i <= 8; i++)
{
cin >> x[i];
sum += x[i];
}
sort(a + 1, a + 1 + n, cmp);
int tot = 0;
for (int i = 1; i <= n; i++)
{
if (a[i].c == 1 && i >= cnt1 - 6)
{
tot++;
q[tot].c = 1;
q[tot].a = a[i].a;
}
if (a[i].c == 2 && i == cnt2 + cnt1)
{
tot++;
q[tot].c = 2;
q[tot].a = a[i].a;
}
if (a[i].c == 3 && i >= n - 2)
{
tot++;
q[tot].c = 3;
q[tot].a = a[i].a;
}
}
sort(q + 1, q + 1 + tot, cmp2);
int sum1 = 0, sum2 = 0, sum3 = 0;
int ans = 0;
for (int i = 1; i <= tot; i++)
{
if (q[i].c == 1)
{
if (sum1 < 7)
{
sum1++;
ans += q[i].a;
}
}
else if (q[i].c == 2)
{
if (sum2 == 0)
{
sum2++;
ans += q[i].a;
}
}
else
{
if (sum3 < 3)
{
sum3++;
ans += q[i].a;
}
}
if (sum1 + sum2 + sum3 == 8)
{
break;
}
}
if (sum2 <= 1 && sum3 >= 1 && sum3 <= 3 && sum1 + sum2 + sum3 == 8)
{
if (ans / 8 >= sum / 8 - 2)
{
cout << "Yes\n";
}
else
{
cout << "No\n";
}
}
else
{
cout << "No\n";
}
}
return 0;
}