#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

void solve() {
    int n;
    cin >> n;
    
    long long max_a = 0;
    int count_ge_2 = 0; // 记录数量大于等于 2 的卡牌种类数
    
    for (int i = 0; i < n; i++) {
        long long a;
        cin >> a;
        if (a >= 2) {
            count_ge_2++;
        }
        max_a = max(max_a, a);
    }
    
    // 只有一种卡牌,必死无疑
    if (n == 1) {
        cout << -1 << "\n";
        return;
    }
    
    // 根据上面的推导进行判断
    if (count_ge_2 == 0) {
        // 没有任何重复的牌,闭着眼翻都能赢
        cout << 0 << "\n";
    } else if (count_ge_2 == 1) {
        // 只有一种牌有重复,留一张在暗牌里当内鬼,暗牌堆就全是不重复的牌了
        cout << max_a - 1 << "\n";
    } else {
        // 有多种牌存在重复,必须把最多的那种牌全看光
        cout << max_a << "\n";
    }
}

int main() {
    // 算法竞赛起手式:解除输入输出的绑定,提升速度
  
    
    int t;
    cin >> t;
    while (t--) {
        solve();
    }
    
    return 0;
}