1 #include<cstdio>
2 #include<cstring>
3 const int maxn=100000+5;
4 int sum[maxn<<4];
5 int add[maxn<<4];
6 int num_index[maxn];
7 void push_up(int rt)
8 {
9 sum[rt]=sum[rt<<1]+sum[rt<<1|1];
10 }
11 void push_down(int rt,int len)
12 {
13 if(add[rt])
14 {
15 sum[rt<<1]=add[rt]*(len-len/2);
16 sum[rt<<1|1]=add[rt]*(len/2);
17 add[rt<<1]=add[rt<<1|1]=add[rt];
18 add[rt]=0;
19 }
20 }
21 void update(int L,int R,int inc,int l,int r,int rt)
22 {
23 if(L<=l&&r<=R)
24 {
25 sum[rt]+=inc*(r-l+1);
26 add[rt]+=inc;
27 return ;
28 }
29 push_down(rt,r-l+1);
30 int m=(l+r)>>1;
31 if(L<=m) update(L,R,inc,l,m,rt<<1);
32 if(R>m) update(L,R,inc,m+1,r,rt<<1|1);
33 push_up(rt);
34 }
35 int query(int L,int R,int l,int r,int rt)
36 {
37 if(L<=l&&r<=R)
38 {
39 return sum[rt];
40 }
41 push_down(rt,r-l+1);
42 int ret=0;
43 int m=(l+r)>>1;
44 if(l<=m) ret+=query(L,R,l,m,rt<<1);
45 if(R>m) ret+=query(L,R,m+1,r,rt<<1|1);
46 return ret;
47 }
48 int n,m;
49 int main()
50 {
51 int t;
52 scanf("%d",&t);
53 while(t--)
54 {
55 scanf("%d%d",&n,&m);
56 memset(sum,0,sizeof(sum));
57 memset(add,0,sizeof(add));
58 update(1+maxn,n+maxn,1,1,2*maxn-1,1);
59 int a;
60 for(int i=1;i<=n;i++)
61 num_index[i]=maxn+i;
62 int top=maxn;
63 for(int i=0;i<m;i++)
64 {
65 scanf("%d",&a);
66 printf("%d",query(1,num_index[a]-1,1,2*maxn-1,1));
67 if(i!=m-1) printf(" ");
68 update(num_index[a],num_index[a],-1,1,2*maxn-1,1);
69 num_index[a]=top--;
70 update(num_index[a],num_index[a],1,1,2*maxn-1,1);
71 }
72 printf("\n");
73 }
74 return 0;
75 }