import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 方案其实很简单,因为预知是随机的,要想必赢必须预设两种最坏情况
//1、每次都预知到同一种牌(因为预知到不同牌那不就得到结果了),
// 当这种牌预知完了后,选择一张预知牌,再随意翻开一张其他牌就赢了(因为同类牌都被预知完了)
// 此时预知次数就是数量最大的那种牌的数量max;
//2、在进行1过程中,同类牌还剩一张时,当其他所有种类牌都只有一张的情况下,其实也不用再预知了
// 因为此时场上并没有相同牌,随意翻开两张就是,此次预知次数就是sum-n次
//最后min两种情况就是本题的结果
while (in.hasNext()) {
int t = in.nextInt();
in.nextLine();
for(int i=0;i<t;i++){
int n=in.nextInt();
in.nextLine();
long sum=0;
int max=0;
for(int j=0;j<n;j++){
int val=in.nextInt();
// System.out.println(val);
sum+=val;
max=Math.max(max,val);
}
in.nextLine();
if(n==1){
System.out.println(-1);
}else{
System.out.println(Math.min(sum-n,max));
}
}
}
}
}