#nullable enable static int Solve() { var n = int.Parse(Console.ReadLine()!); var az = Console.ReadLine()!.Split(' ').Select(int.Parse).ToArray(); bool J(int k) { var cz = new int[k]; foreach (var a in az) { if (a < k) cz[a]++; else cz[0]++; } var d = 0; for (var i = k - 1; i > 0; i--) { var c = cz[i]; if (c > d) cz[0] += c - d - 1; else { d += d - c + 1; if (d > n) return false; } } return cz[0] > d; } var pass = 0; var fail = n + 2; while (fail - pass >= 2) { var mid = (pass + fail) >> 1; if (J(mid)) pass = mid; else fail = mid; } return pass; } var t = int.Parse(Console.ReadLine()!); var ans = Enumerable.Range(0, t).Select(_ => Solve()).ToArray(); Console.WriteLine(string.Join(Environment.NewLine, ans));