#include <iostream>
#include <vector>
using namespace std;
int main() {
int T;
cin >> T; // 测试用例数量
while (T--) {
int n;
cin >> n; // 回合数
vector<int> s(n); // Bob的出拳序列
// 统计Bob出拳中0、1、2的数量
int bob0 = 0, bob1 = 0, bob2 = 0;
for (int i = 0; i < n; ++i) {
cin >> s[i];
if (s[i] == 0) bob0++;
else if (s[i] == 1) bob1++;
else bob2++;
}
// Alice的出拳数量:a是0的数量,b是1的数量,c是2的数量
int a, b, c;
cin >> a >> b >> c;
int win = 0;
// 1. Alice用0打Bob的2
int match = min(a, bob2);
win += match;
a -= match; // 剩余0的数量
bob2 -= match; // 剩余Bob的2
// 2. Alice用1打Bob的0
match = min(b, bob0);
win += match;
b -= match; // 剩余1的数量
bob0 -= match; // 剩余Bob的0
// 3. Alice用2打Bob的1
match = min(c, bob1);
win += match;
c -= match; // 剩余2的数量
bob1 -= match; // 剩余Bob的1
// 4. 剩余的 Alice 出拳和 Bob 的出拳进行匹配(逆向匹配)
// 4.1 Alice用剩余的0去打Bob的1
match = min(a, bob1);
win += match;
a -= match; // 剩余0的数量
bob1 -= match; // 剩余Bob的1
// 4.2 Alice用剩余的1去打Bob的2
match = min(b, bob2);
win += match;
b -= match; // 剩余1的数量
bob2 -= match; // 剩余Bob的2
// 4.3 Alice用剩余的2去打Bob的0
match = min(c, bob0);
win += match;
cout << win << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CiAgICBpbnQgVDsKICAgIGNpbiA+PiBUOyAgLy8g5rWL6K+V55So5L6L5pWw6YePCiAgICB3aGlsZSAoVC0tKSB7CiAgICAgICAgaW50IG47CiAgICAgICAgY2luID4+IG47ICAvLyDlm57lkIjmlbAKICAgICAgICB2ZWN0b3I8aW50PiBzKG4pOyAgLy8gQm9i55qE5Ye65ouz5bqP5YiXCiAgICAgICAgLy8g57uf6K6hQm9i5Ye65ouz5LitMOOAgTHjgIEy55qE5pWw6YePCiAgICAgICAgaW50IGJvYjAgPSAwLCBib2IxID0gMCwgYm9iMiA9IDA7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgICAgICAgICAgY2luID4+IHNbaV07CiAgICAgICAgICAgIGlmIChzW2ldID09IDApIGJvYjArKzsKICAgICAgICAgICAgZWxzZSBpZiAoc1tpXSA9PSAxKSBib2IxKys7CiAgICAgICAgICAgIGVsc2UgYm9iMisrOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBBbGljZeeahOWHuuaLs+aVsOmHj++8mmHmmK8w55qE5pWw6YeP77yMYuaYrzHnmoTmlbDph4/vvIxj5pivMueahOaVsOmHjwogICAgICAgIGludCBhLCBiLCBjOwogICAgICAgIGNpbiA+PiBhID4+IGIgPj4gYzsKICAgICAgICAKICAgICAgICBpbnQgd2luID0gMDsKCiAgICAgICAgLy8gMS4gQWxpY2XnlKgw5omTQm9i55qEMgogICAgICAgIGludCBtYXRjaCA9IG1pbihhLCBib2IyKTsKICAgICAgICB3aW4gKz0gbWF0Y2g7CiAgICAgICAgYSAtPSBtYXRjaDsgIC8vIOWJqeS9mTDnmoTmlbDph48KICAgICAgICBib2IyIC09IG1hdGNoOyAgLy8g5Ymp5L2ZQm9i55qEMgoKICAgICAgICAvLyAyLiBBbGljZeeUqDHmiZNCb2LnmoQwCiAgICAgICAgbWF0Y2ggPSBtaW4oYiwgYm9iMCk7CiAgICAgICAgd2luICs9IG1hdGNoOwogICAgICAgIGIgLT0gbWF0Y2g7ICAvLyDliankvZkx55qE5pWw6YePCiAgICAgICAgYm9iMCAtPSBtYXRjaDsgIC8vIOWJqeS9mUJvYueahDAKCiAgICAgICAgLy8gMy4gQWxpY2XnlKgy5omTQm9i55qEMQogICAgICAgIG1hdGNoID0gbWluKGMsIGJvYjEpOwogICAgICAgIHdpbiArPSBtYXRjaDsKICAgICAgICBjIC09IG1hdGNoOyAgLy8g5Ymp5L2ZMueahOaVsOmHjwogICAgICAgIGJvYjEgLT0gbWF0Y2g7ICAvLyDliankvZlCb2LnmoQxCiAgICAgICAgCiAgICAgICAgLy8gNC4g5Ymp5L2Z55qEIEFsaWNlIOWHuuaLs+WSjCBCb2Ig55qE5Ye65ouz6L+b6KGM5Yy56YWN77yI6YCG5ZCR5Yy56YWN77yJCiAgICAgICAgLy8gNC4xIEFsaWNl55So5Ymp5L2Z55qEMOWOu+aJk0JvYueahDEKICAgICAgICBtYXRjaCA9IG1pbihhLCBib2IxKTsKICAgICAgICB3aW4gKz0gbWF0Y2g7CiAgICAgICAgYSAtPSBtYXRjaDsgIC8vIOWJqeS9mTDnmoTmlbDph48KICAgICAgICBib2IxIC09IG1hdGNoOyAgLy8g5Ymp5L2ZQm9i55qEMQoKICAgICAgICAvLyA0LjIgQWxpY2XnlKjliankvZnnmoQx5Y675omTQm9i55qEMgogICAgICAgIG1hdGNoID0gbWluKGIsIGJvYjIpOwogICAgICAgIHdpbiArPSBtYXRjaDsKICAgICAgICBiIC09IG1hdGNoOyAgLy8g5Ymp5L2ZMeeahOaVsOmHjwogICAgICAgIGJvYjIgLT0gbWF0Y2g7ICAvLyDliankvZlCb2LnmoQyCgogICAgICAgIC8vIDQuMyBBbGljZeeUqOWJqeS9meeahDLljrvmiZNCb2LnmoQwCiAgICAgICAgbWF0Y2ggPSBtaW4oYywgYm9iMCk7CiAgICAgICAgd2luICs9IG1hdGNoOwogICAgICAgIAogICAgICAgIGNvdXQgPDwgd2luIDw8IGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=