using namespace std;
int num[MAX];
int ans[MAX];
int n;
int lowbit (int a)
{
return a&(-a);
}
void update (int x,int date)
{
while (x<=n)
{
num[x]+=date;
x+=lowbit(x);
}
}
int make_sum(int x)
{
int as=0;
while (x>0)
{
as+=num[x];
x-=lowbit(x);
}
return as;
}
int make_who(int x)//找出第k大的位置
{
if (make_sum(n)<x) return -1;
int l,r,mid;
l=1; r=n;
mid=(int)((l+r)/2);
while (r>l)
{
if (make_sum(mid)<x) l=mid+1;
else r=mid;
mid=(int)((l+r)/2);
}
return l;
}
int main()
{
int i,j,k;
int t,te;
int c[MAX];
scanf ("%d",&t);
while (t--)
{
memset(num,0,sizeof(num));
memset(ans,0,sizeof(ans));
memset(c,0,sizeof(c));
scanf ("%d",&n);
for (i=1; i<=n; i++)
{
scanf ("%d",&c[i]);
update(i,1);
}
te=0;
for (i=n; i>0; i--)
{
int ca;
ca=c[i]-c[i-1];
ans[i]=make_who(n-te-ca);
update(ans[i],-1);
te++;
}
for (i=1; i<=n; i++)
{
if (i==1) printf("%d",ans[i]);
else printf(" %d",ans[i]);
}
printf("\n");
}
return 0;
}