#include <cstring> #include <cstdio> #include <iostream> #include <algorithm> using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 const int maxn = 50110; int vis[maxn<<2]; void build(int l,int r,int rt){ vis[rt]=0; if(l==r) return ; int m=(l+r)>>1; build(lson); build(rson); } void pushup(int l,int r,int rt){ vis[rt]=vis[rt<<1]+vis[rt<<1|1]; } int ans; void update(int l,int r,int rt,int posi){ if(l==r){ vis[rt]=1; ans=r; return ; } int m=(l+r)>>1; if(vis[rt<<1]+posi<=m-l+1) update(lson,posi); else update(rson,posi-m+l-1+vis[rt<<1]); pushup(l,r,rt); } int n; int main() { int T; scanf("%d",&T); while(T--){ scanf("%d",&n); build(1,n,1); for(int i=1;i<=n;i++){ int posi; scanf("%d",&posi); posi++; update(1,n,1,posi); if(i!=1) printf(" "); printf("%d",ans); } printf("\n"); } return 0; }