#include #include #include #include #include #include #include #include #include #include #include #define M 50005 using namespace std; int sum[M]; int A[M],ans[M]; int lowbit(int x){ return x&(-x); } void update(int x,int y,int n){ while(x<=n){ sum[x]+=y; x+=lowbit(x); } } int query(int x){ int res=0; while(x>0){ //printf("%d\n",x); res+=sum[x]; x-=lowbit(x); } return res; } int main(){ int T; scanf("%d",&T); while(T--){ memset(sum,0,sizeof(sum)); memset(ans,0,sizeof(ans)); int n,j; scanf("%d",&n); for(j=1;j<=n;j++){ scanf("%d",&A[j]); update(j,1,n); } for(j=n;j>=2;j--) A[j]-=A[j-1]; for(j=n;j>=1;j--){ int l=1,r=n,res; while(l<=r){ int mid=(l+r)>>1; if(query(n)-query(mid-1)>=A[j]+1){ res=mid; l=mid+1; } else r=mid-1; } ans[j]=res; update(res,-1,n); } for(j=1;j