1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <bits/stdc++.h>

using i64 = long long;
using u64 = unsigned long long;
using u32 = unsigned;
using u128 = unsigned __int128;

void solve() {
    int n;
    std::cin >> n;
    
    std::vector<int> a(n);
    for (int i = 0; i < n; i++) {
        std::cin >> a[i];
    }
    
    auto check = [&](int x) {
        int left = 0;
        for (int i = 0; i < n; i++) {
            int cur = 0;
            while (left + cur <= x && 1LL * cur * (cur - 1) * (cur - 2) / 6 + 1LL * cur * (cur - 1) / 2 * (x - cur) + 1LL * cur * left * (x - left - cur) < a[i]) {
                cur++;
            }
            if (left + cur > x) {
                return false;
            }
            left += cur;
        }
        return true;
    };
    
    int lo = 0, hi = 200008;
    while (lo < hi) {
        int x = (lo + hi) / 2;
        if (check(x)) {
            hi = x;
        } else {
            lo = x + 1;
        }
    }
    
    std::cout << lo << "\n";
}

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    
    int t;
    std::cin >> t;
    
    while (t--) {
        solve();
    }
    
    return 0;
}