#include<bits/stdc++.h>
using namespace std;
int maxArea(int arr[],int n);
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
int arr[n];
for(int i = 0;i<n;i++)
cin>>arr[i];
cout<<maxArea(arr,n)<<endl;
}
return 0;
}
bool isSquarePossible(int arr[], int n, int l)
{
// To store the count of elements
// greater than or equal to l
int cnt = 0;
for (int i = 0; i < n; i++) {
// Increment the count
if (arr[i] >= l)
cnt++;
// If the count becomes greater
// than or equal to l
if (cnt >= l)
return true;
}
return false;
}
int maxArea(int arr[], int n)
{
int l = 0, r = n;
int len = 0;
while (l <= r) {
int m = l + ((r - l) / 2);
// If square is possible with
// side length m
if (isSquarePossible(arr, n, m)) {
len = m;
l = m + 1;
}
// Try to find a square with
// smaller side length
else
r = m - 1;
}
// Return the area
return len;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYXhBcmVhKGludCBhcnJbXSxpbnQgbik7CgppbnQgbWFpbigpCnsKCWludCB0OwoJY2luPj50OwoJd2hpbGUodC0tKQoJewoJCWludCBuOwoJCWNpbj4+bjsKCQlpbnQgYXJyW25dOwoJCWZvcihpbnQgaSA9IDA7aTxuO2krKykKCQljaW4+PmFycltpXTsKCQljb3V0PDxtYXhBcmVhKGFycixuKTw8ZW5kbDsKCX0KCXJldHVybiAwOwp9Cgpib29sIGlzU3F1YXJlUG9zc2libGUoaW50IGFycltdLCBpbnQgbiwgaW50IGwpIAp7IAogIAogICAgLy8gVG8gc3RvcmUgdGhlIGNvdW50IG9mIGVsZW1lbnRzIAogICAgLy8gZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGwgCiAgICBpbnQgY250ID0gMDsgCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgeyAKICAKICAgICAgICAvLyBJbmNyZW1lbnQgdGhlIGNvdW50IAogICAgICAgIGlmIChhcnJbaV0gPj0gbCkgCiAgICAgICAgICAgIGNudCsrOyAKICAKICAgICAgICAvLyBJZiB0aGUgY291bnQgYmVjb21lcyBncmVhdGVyIAogICAgICAgIC8vIHRoYW4gb3IgZXF1YWwgdG8gbCAKICAgICAgICBpZiAoY250ID49IGwpIAogICAgICAgICAgICByZXR1cm4gdHJ1ZTsgCiAgICB9IAogIAogICAgcmV0dXJuIGZhbHNlOyAKfSAKCmludCBtYXhBcmVhKGludCBhcnJbXSwgaW50IG4pIAp7IAogICAgaW50IGwgPSAwLCByID0gbjsgCiAgICBpbnQgbGVuID0gMDsgCiAgICB3aGlsZSAobCA8PSByKSB7IAogICAgICAgIGludCBtID0gbCArICgociAtIGwpIC8gMik7IAogIAogICAgICAgIC8vIElmIHNxdWFyZSBpcyBwb3NzaWJsZSB3aXRoIAogICAgICAgIC8vIHNpZGUgbGVuZ3RoIG0gCiAgICAgICAgaWYgKGlzU3F1YXJlUG9zc2libGUoYXJyLCBuLCBtKSkgeyAKICAgICAgICAgICAgbGVuID0gbTsgCiAgICAgICAgICAgIGwgPSBtICsgMTsgCiAgICAgICAgfSAKICAKICAgICAgICAvLyBUcnkgdG8gZmluZCBhIHNxdWFyZSB3aXRoIAogICAgICAgIC8vIHNtYWxsZXIgc2lkZSBsZW5ndGggCiAgICAgICAgZWxzZQogICAgICAgICAgICByID0gbSAtIDE7IAogICAgfSAKICAKICAgIC8vIFJldHVybiB0aGUgYXJlYSAKICAgIHJldHVybiBsZW47IAp9