#include <iostream>
#include<bits/stdc++.h>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <utility>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include<algorithm>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define IOF ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
#define ll long long
#define ld long double
#define cy cout << "YES" << '\n';
#define cn cout << "NO" << '\n';
using namespace std;
using namespace __gnu_pbds;
template<class T> using ordered_multiset = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>;
template<typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
int dx[] = {1, 0, -1, 0, -1, -1, 1, 1};
int dy[] = {0, -1, 0, 1, -1, 1, -1, 1};
int knightX[] = {-2, -2, 2, 2, 1, 1 , -1, -1};
int knighty[] = {-1, 1, -1, 1, -2, 2, -2, 2};
char di[] = {'D', 'L', 'U', 'R'};
const int N =505 , M = 1e4+5;
const ll MOD = 998244353;
const int LOG = 20;
void FOI() {
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
}
bool prime[N + 6];
vector<int> primes;
void sieve() {
fill(prime, prime + N, 1);
prime[0] = prime[1] = false;
for (int i = 2; i * i < N; ++i) {
if (!prime[i]) continue;
for (int j = i * i; j <= N; j += i) {
prime[j] = false;
}
}
for (int i = 2; i < N; ++i) {
if (prime[i]) {
primes.push_back(i);
}
}
}
int n;
vector<int> v;
void solve(){
cin >> n;
v.clear();
v.resize(n);
int sum = 0;
for(int i = 0 ; i < n ; i++)cin >> v[i] , sum+= v[i];
if(sum < 2 * n){
cn
return;
}
int dp[505] , ndp[505];
int rem = sum - 2*n;
for(int i = 0 ; i < 505 ; i++)dp[i] = i == 0 ? 0 : 1e9;
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j <=rem; j++){
ndp[j] = 1e9;
}
for(int j = 0 ; j<= rem ; j++){
if(dp[j] == 1e9)continue;
for (auto &&p : primes)
{
int cost = p-2;
if(j + cost > rem)break;
int numOfRealOp = dp[j] + max(0 , p-v[i]);
ndp[j+cost] = min(ndp[j+cost] , numOfRealOp);
}
}
swap(dp , ndp);
}
if(dp[rem] == 1e9){
cn
return;
}
cy
cout <<dp[rem]<< '\n';
}
signed main() {
IOF
//FOI();
//freopen("substr.in", "r", stdin);
sieve();
ll t = 1;
cin >> t;
while (t--) {
solve() ;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RhY2s+CiNpbmNsdWRlIDxxdWV1ZT4KI2luY2x1ZGUgPGRlcXVlPgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHVub3JkZXJlZF9zZXQ+CiNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgojaW5jbHVkZTxhbGdvcml0aG0+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+CiNkZWZpbmUgSU9GIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKSwgY2luLnRpZShudWxscHRyKSwgY291dC50aWUobnVsbHB0cik7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBjeSBjb3V0IDw8ICJZRVMiIDw8ICdcbic7CiNkZWZpbmUgY24gY291dCA8PCAiTk8iIDw8ICdcbic7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwogCnRlbXBsYXRlPGNsYXNzIFQ+IHVzaW5nIG9yZGVyZWRfbXVsdGlzZXQgPSB0cmVlPFQsIG51bGxfdHlwZSwgbGVzc19lcXVhbDxUPiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT47CnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnVzaW5nIG9yZGVyZWRfc2V0ID0gdHJlZTxULCBudWxsX3R5cGUsIGxlc3M8VD4sIHJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+OwogCmludCBkeFtdID0gezEsIDAsIC0xLCAwLCAtMSwgLTEsIDEsIDF9OwppbnQgZHlbXSA9IHswLCAtMSwgMCwgMSwgLTEsIDEsIC0xLCAxfTsKaW50IGtuaWdodFhbXSA9IHstMiwgLTIsIDIsIDIsIDEsIDEgLCAtMSwgLTF9OwppbnQga25pZ2h0eVtdID0gey0xLCAxLCAtMSwgMSwgLTIsIDIsIC0yLCAyfTsKY2hhciBkaVtdID0geydEJywgJ0wnLCAnVScsICdSJ307CmNvbnN0IGludCBOID01MDUgLCBNID0gMWU0KzU7CmNvbnN0IGxsIE1PRCA9ICA5OTgyNDQzNTM7CmNvbnN0IGludCBMT0cgPSAyMDsKdm9pZCBGT0koKSB7CiAgICAgIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOwogICAgICBmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwogIH0KYm9vbCBwcmltZVtOICsgNl07CnZlY3RvcjxpbnQ+IHByaW1lczsKCnZvaWQgc2lldmUoKSB7CiAgICBmaWxsKHByaW1lLCBwcmltZSArIE4sIDEpOwogICAgcHJpbWVbMF0gPSBwcmltZVsxXSA9IGZhbHNlOwogICAgZm9yIChpbnQgaSA9IDI7IGkgKiBpIDwgTjsgKytpKSB7CiAgICAgICAgaWYgKCFwcmltZVtpXSkgY29udGludWU7CiAgICAgICAgZm9yIChpbnQgaiA9IGkgKiBpOyBqIDw9IE47IGogKz0gaSkgewogICAgICAgICAgICBwcmltZVtqXSA9IGZhbHNlOwogICAgICAgIH0KICAgIH0KICAgIGZvciAoaW50IGkgPSAyOyBpIDwgTjsgKytpKSB7CiAgICAgICAgaWYgKHByaW1lW2ldKSB7CiAgICAgICAgICAgIHByaW1lcy5wdXNoX2JhY2soaSk7CiAgICAgICAgfQogICAgfQp9CgppbnQgbjsKdmVjdG9yPGludD4gdjsKCnZvaWQgc29sdmUoKXsKY2luID4+IG47CnYuY2xlYXIoKTsKdi5yZXNpemUobik7CmludCBzdW0gPSAwOwpmb3IoaW50IGkgPSAwIDsgaSA8IG4gOyBpKyspY2luID4+IHZbaV0gLCBzdW0rPSB2W2ldOwppZihzdW0gPCAyICogbil7CiAgY24KICByZXR1cm47IAp9CmludCBkcFs1MDVdICwgbmRwWzUwNV07CmludCByZW0gPSBzdW0gLSAyKm47CmZvcihpbnQgaSA9IDAgOyBpIDwgNTA1IDsgaSsrKWRwW2ldID0gaSA9PSAwID8gMCA6IDFlOTsKZm9yKGludCBpID0gMCA7IGkgPCBuIDsgaSsrKXsKICBmb3IoaW50IGogPSAwIDsgaiA8PXJlbTsgIGorKyl7CiAgICBuZHBbal0gPSAxZTk7CiAgfQogIGZvcihpbnQgaiA9IDAgOyBqPD0gcmVtIDsgaisrKXsKICAgIGlmKGRwW2pdID09IDFlOSljb250aW51ZTsKICBmb3IgKGF1dG8gJiZwIDogcHJpbWVzKQogIHsKICAgIGludCBjb3N0ID0gcC0yOwogICAgaWYoaiArIGNvc3QgPiByZW0pYnJlYWs7CiAgICBpbnQgbnVtT2ZSZWFsT3AgPSBkcFtqXSArIG1heCgwICwgcC12W2ldKTsKICAgIG5kcFtqK2Nvc3RdID0gbWluKG5kcFtqK2Nvc3RdICwgbnVtT2ZSZWFsT3ApOwogIH0KfQpzd2FwKGRwICwgbmRwKTsKfQppZihkcFtyZW1dID09IDFlOSl7CiAgY24gCiAgcmV0dXJuOwp9CmN5CmNvdXQgPDxkcFtyZW1dPDwgJ1xuJzsKCn0gCgoKc2lnbmVkIG1haW4oKSB7CiAgSU9GCiAgLy9GT0koKTsKICAvL2ZyZW9wZW4oInN1YnN0ci5pbiIsICJyIiwgc3RkaW4pOwogICAgc2lldmUoKTsKICAgIGxsIHQgPSAxOwogICAgY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKSB7CgogICAgc29sdmUoKSA7CgogICAgfQoKIAogICAgcmV0dXJuIDA7Cn0=