const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
	// 如果只有一种种类,那么无论如何都会输
    // 最好的情况下,所有种类只有一张,那么不需要预知
    // 较好的情况下,张数最多的拿到只剩一张,如果此时其他种类都是各一张那么也是随便拿
    // 最差的情况下,我把张数最多种类的预知完,那么剩下的拿哪张都是不一样的
    
    await readline();
    while (await readline()) {
        const line = await readline();
        let tokens = line.split(" ").map((item) => Number(item));
		// 只有一种种类,一定输
        if (tokens.length == 1) {
            console.log(-1);
            continue;
        }
		// 所有种类只有一张
        if (Math.max(...tokens) == 1) {
            console.log(0);
            continue;
        }
		// 张数最多的拿到只剩一张,如果此时其他种类都是各一张那么也是随便拿
        if(tokens.filter(item=>item==1).length==tokens.length-1){
            console.log(Math.max(...tokens)-1)
            continue;
        }
		// 最差的情况下,我把张数最多种类的预知完,那么剩下的拿哪张都是不一样的
        console.log(Math.max(...tokens))
    }
})();