#include #include #include #include using namespace std; // vector> dp bool possible(const vector &a, long long mid) { vector v = a; for (long long i = 0; i < v.size(); i++) { v[i] += (i + 1) * mid; } for (long long i = 1; i < v.size(); i++) { if (v[i] < v[i - 1] + 1) return false; } return true; } int main() { long long t; cin >> t; while (t--) { long long n; cin >> n; vector a(n); for (auto &x : a) cin >> x; long long low = 0, high = 1e18, ans = 0; while (low <= high) { long long mid = low + (high - low) / 2; if (possible(a, mid)) { ans = mid; high = mid - 1; } else { low = mid + 1; } } cout << ans << '\n'; } }