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