#include #include #include using namespace std; int t[200005],n,a[100005],b[100005],ans[100005]; void add(int p,int l,int r,int x,int v){ t[p]+=v; if (l==r) return; int mid=(l+r)/2; if (x<=mid) add(p*2,l,mid,x,v); else add(p*2+1,mid+1,r,x,v); } int ask(int p,int l,int r,int k){ if (l==r) return l; int mid=(l+r)/2; if (t[p*2+1]>=k) return ask(p*2+1,mid+1,r,k); else return ask(p*2,l,mid,k-t[p*2+1]); } int main(){ int tt;scanf("%d",&tt); for (;tt--;){ scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",&a[i]); for (int i=1;i<=n;i++) b[i]=a[i]-a[i-1]; memset(t,0,sizeof(t)); for (int i=1;i<=n;i++) add(1,1,n,i,1); for (int i=n;i;i--){ ans[i]=ask(1,1,n,b[i]+1); add(1,1,n,ans[i],-1); } for (int i=1;i