#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
const int mod = 1e9 + 7;
typedef pair<int ,int > PII;
typedef long long ll;
int n;
ll h[N];
bool check (ll tar) {
ll hh[N];
for (int i =1; i<= n; i ++) hh[i] = h[i];
for (int i = n; i >= 3; i --) {
if (hh[i] < tar) break;
int dif = min (h[i], hh[i] - tar) / 3;
hh[i - 1] += dif;
hh[i - 2] += dif * 2;
}
long long minv = 0x3f3f3f3f;
for (int i =1; i <= n; i ++)
minv = min (minv, hh[i]);
return minv >= tar;
}
void solve() {
cin >> n;
for (int i =1 ; i <= n ;i++) cin >> h[i];
int l = 1, r = 1e9;
while (l < r) {
int mid = l + r + 1>> 1;
if (check(mid)) l = mid;
else r = mid - 1;
}
cout << l << endl;
}
int main(){
int t;
cin >> t;
while (t --) solve();
return 0;
}
实际上是从前往后,但是需要从后往前实现所以不能超过原来的堆的数量