#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
const int N=50010,mod=1145141;
int a[N],h[mod],ne[N],u;
struct sun
{
int x;
bool f;
}ha[N];
inline void rd(int &x)
{
x=0;int f=1;char c=getchar();
while((c<'0'||c>'9')&&c!='-') c=getchar();
if(c=='-') f=-1,c=getchar();
while(c<='9'&&c>='0') x=x*10+c-'0',c=getchar();
x*=f;
}
void wdwd(int x)
{
int w=x;
x=(x%mod+mod)%mod;
bool flag=0;
for(int i=h[x];i;i=ne[i])
{
if(ha[i].x==w)
{
flag=1;
break;
}
}
if(!flag)
{
u++;
ha[u].x=w;
ne[u]=h[x];
h[x]=u;
}
}
int main()
{
int T;
rd(T);
while(T--)
{
memset(ha,0,sizeof ha);
memset(ne,0,sizeof ne);
memset(h,0,sizeof h);
int n;
rd(n);
for(int i=1;i<=n;i++)
{
rd(a[i]);
wdwd(a[i]);
}
for(int i=1;i<=n;i++)
{
int x=a[i];
x=(x%mod+mod)%mod;
for(int j=h[x];j;j=ne[j])
{
if(ha[j].x==a[i])
{
if(ha[j].f==1) break;
else
{
printf("%d ",a[i]);
ha[j].f=1;
break;
}
}
}
}
puts("");
}
return 0;
}