#include<bits/stdc++.h>
using namespace std;
int getNumberOfDistinctElements(vector<int> &arr) {
int n = arr.size();
if(n <= 0) return 0;
int numberOfDistinctElements = 1;
int currentElement = arr[0];
for(int i = 0; i < n; i++) {
if(arr[i] != currentElement) {
numberOfDistinctElements++;
currentElement = arr[i];
}
}
return numberOfDistinctElements;
}
int getUpperBound(vector<int> &arr, int target) {
int n = arr.size();
int low = 0, high = n-1;
int upperBound = high;
while(low <= high) {
int mid = low + (high - low) / 2;
if(arr[mid] >= target) {
upperBound = mid;
high = mid - 1;
} else {
low = mid + 1;
}
}
return arr[upperBound];
}
int solve(vector<int> &arr) {
sort(arr.begin(), arr.end());
int numberOfDistinctElements = getNumberOfDistinctElements(arr);
int upperBound = getUpperBound(arr, numberOfDistinctElements);
return upperBound;
}
int main() {
int numberOfTestCases;
cin >> numberOfTestCases;
vector<int> results;
while(numberOfTestCases--) {
int n;
cin >> n;
vector<int> arr(n);
for(int i = 0; i < n; i++) {
cin >> arr[i];
}
results.push_back(solve(arr));
}
for(const int result : results) {
cout << result << "\n";
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgZ2V0TnVtYmVyT2ZEaXN0aW5jdEVsZW1lbnRzKHZlY3RvcjxpbnQ+ICZhcnIpIHsKCWludCBuID0gYXJyLnNpemUoKTsKCWlmKG4gPD0gMCkgcmV0dXJuIDA7CgkKCWludCBudW1iZXJPZkRpc3RpbmN0RWxlbWVudHMgPSAxOwoJaW50IGN1cnJlbnRFbGVtZW50ID0gYXJyWzBdOwoJCglmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJaWYoYXJyW2ldICE9IGN1cnJlbnRFbGVtZW50KSB7CgkJCW51bWJlck9mRGlzdGluY3RFbGVtZW50cysrOwoJCQljdXJyZW50RWxlbWVudCA9IGFycltpXTsKCQl9Cgl9CgkKCXJldHVybiBudW1iZXJPZkRpc3RpbmN0RWxlbWVudHM7Cn0KCmludCBnZXRVcHBlckJvdW5kKHZlY3RvcjxpbnQ+ICZhcnIsIGludCB0YXJnZXQpIHsKCWludCBuID0gYXJyLnNpemUoKTsKCWludCBsb3cgPSAwLCBoaWdoID0gbi0xOwoJaW50IHVwcGVyQm91bmQgPSBoaWdoOwoJCgl3aGlsZShsb3cgPD0gaGlnaCkgewoJCWludCBtaWQgPSBsb3cgKyAoaGlnaCAtIGxvdykgLyAyOwoJCQoJCWlmKGFyclttaWRdID49IHRhcmdldCkgewoJCQl1cHBlckJvdW5kID0gbWlkOwoJCQloaWdoID0gbWlkIC0gMTsKCQl9IGVsc2UgewoJCQlsb3cgPSBtaWQgKyAxOwoJCX0KCX0KCQoJcmV0dXJuIGFyclt1cHBlckJvdW5kXTsKfQoKaW50IHNvbHZlKHZlY3RvcjxpbnQ+ICZhcnIpIHsKICAgIHNvcnQoYXJyLmJlZ2luKCksIGFyci5lbmQoKSk7CiAgICAKICAgIGludCBudW1iZXJPZkRpc3RpbmN0RWxlbWVudHMgPSBnZXROdW1iZXJPZkRpc3RpbmN0RWxlbWVudHMoYXJyKTsKICAgIGludCB1cHBlckJvdW5kID0gZ2V0VXBwZXJCb3VuZChhcnIsIG51bWJlck9mRGlzdGluY3RFbGVtZW50cyk7CiAgICAKICAgIHJldHVybiB1cHBlckJvdW5kOwp9CgppbnQgbWFpbigpIHsKICAgIGludCBudW1iZXJPZlRlc3RDYXNlczsKICAgIGNpbiA+PiBudW1iZXJPZlRlc3RDYXNlczsKCiAgICB2ZWN0b3I8aW50PiByZXN1bHRzOwoKICAgIHdoaWxlKG51bWJlck9mVGVzdENhc2VzLS0pIHsKICAgICAgICBpbnQgbjsKICAgICAgICBjaW4gPj4gbjsKCiAgICAgICAgdmVjdG9yPGludD4gYXJyKG4pOwoKICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIGNpbiA+PiBhcnJbaV07CiAgICAgICAgfQoKICAgICAgICByZXN1bHRzLnB1c2hfYmFjayhzb2x2ZShhcnIpKTsKICAgIH0KCiAgICBmb3IoY29uc3QgaW50IHJlc3VsdCA6IHJlc3VsdHMpIHsKICAgICAgICBjb3V0IDw8IHJlc3VsdCA8PCAiXG4iOwogICAgfQp9