#include using namespace std; using pii = pair; using ll = long long; const int N = 2000010, MOD = 998244353, INF = 0x3f3f3f3f; int n, m, w[N]; bool check(int mid, vector c) { int ne = 1; for (int i = n + 30; i > mid - 1; i--) c[0] += c[i]; for (int i = mid - 1; ~i; i--) { if (c[i] >= ne) { c[0] += c[i] - ne; } else { if (i == 0) return 0; ne += ne - c[i]; if (ne > n && i) return 0; } } return 1; } void solve() { scanf("%d", &n); if (n == 1) { scanf("%d", w + 1); printf("%d\n", max(1, w[1])); return; } vector c(n + 31); for (int i = 1; i < n + 1; i++) { scanf("%d", w + i), w[i] = min(w[i], n + 30); c[w[i]]++; } int l = 1, r = n + 30; while (l < r) { int mid = l + r + 1 >> 1; if (check(mid, c)) l = mid; else r = mid - 1; } printf("%d\n", l); } int main() { int T = 1; scanf("%d", &T); while (T--) solve(); return 0; }