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));
                }
                
            }
        }
    }
}