//思路:对于大于mex的数不做处理,把0删完为结束
//dp[j]为mex更新到j所需要的最小花费
//用mex=i时更新到j,转移方程为 dp[j] = min(dp[j], dp[i] + i * (cnt[j] - 1) + j);
#define int long long
#define ld long double
using namespace std;
int dp[5010];
map<int, int>cnt;
int tmp;
void op()
{
int n;
cin >> n;
cnt.clear();
memset(dp, 0x3f, sizeof dp);
for (int i = 1; i <= n; i++)
{
cin >> tmp;
cnt[tmp]++;
}
int mex = 0;
while (cnt[mex])mex++;
dp[mex] = 0;
for (int i = mex; i >= 1; i--)
{
for (int j = 0; j < i; j++)
{
dp[j] = min(dp[j], dp[i] + i * (cnt[j] - 1) + j);
}
}
cout << dp[0] << endl;
}
signed main()
{
int t;
cin >> t;
while (t--)op();
return 0;
}