/*Author: Rishul Aggarwal*/
#include<bits/stdc++.h>
#define mod 1000000007
#define ll long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define in(type,x) scanf("%" #type,&x)
#define debug(args...) {dbg,args; cerr<<endl;}
#define test int t;\
in(d,t);\
while(t--)
using namespace std;
struct debugger
{template<typename T> debugger& operator,(const T& v)
{cerr<< v <<" ";
return *this;
}
}dbg;
ll gcd(ll a,ll b) {if(b==0) return a; return gcd(b,a%b);}
ll power(ll b,ll exp,ll m) {ll ans=1; b%=m; while(exp){if(exp&1) ans=(ans*b)%m; exp>>=1; b=(b*b)%m; } return ans; }
vector<vector<int> >g;
bool visited[1002];
int a[1002];
void dfs_recur(int start,vector<int>& comp,vector<int>& pos)
{
visited[start]=1;
comp.push_back(a[start]);
pos.push_back(start);
int sz=g[start].size();
rep(i,0,sz-1)
if(!visited[g[start][i]])
dfs_recur(g[start][i],comp,pos);
}
void dfs(int start,int n)
{
rep(i,1,n) visited[i]=0;
rep(i,1,n)
{
if(!visited[i])
{
vector<int> comp,pos;
dfs_recur(i,comp,pos);
int sz=comp.size();
/*cout<<"component -> ";
rep(i,0,sz-1) cout<<pos[i]<<" - "<<comp[i]<<" ";
cout<<endl;*/
sort(comp.begin(),comp.end());
rep(i,0,sz-1) a[pos[i]]=comp[i];
}
}
}
int main()
{
test
{
int n,m;
in(d,n),in(d,m);
rep(i,1,n)
in(d,a[i]);
g.resize(1002);
g.clear();
rep(i,1,m)
{
int x,y;
in(d,x),in(d,y);
g[x].push_back(y),g[y].push_back(x);
}
dfs(1,n);
rep(i,1,n) printf("%d ",a[i]);
printf("\n");
}
return 0;
}
LypBdXRob3I6IFJpc2h1bCBBZ2dhcndhbCovCgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgoKI2RlZmluZSBtb2QgMTAwMDAwMDAwNwojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIHJlcChpLGEsYikgZm9yKGludCBpPWE7aTw9YjtpKyspCiNkZWZpbmUgaW4odHlwZSx4KSBzY2FuZigiJSIgI3R5cGUsJngpCiNkZWZpbmUgZGVidWcoYXJncy4uLikge2RiZyxhcmdzOyBjZXJyPDxlbmRsO30KI2RlZmluZSB0ZXN0IGludCB0O1wKaW4oZCx0KTtcCndoaWxlKHQtLSkKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgZGVidWdnZXIKe3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGRlYnVnZ2VyJiBvcGVyYXRvciwoY29uc3QgVCYgdikKe2NlcnI8PCB2IDw8IiAiOwpyZXR1cm4gKnRoaXM7Cn0KfWRiZzsKCmxsIGdjZChsbCBhLGxsIGIpIHtpZihiPT0wKSByZXR1cm4gYTsgcmV0dXJuIGdjZChiLGElYik7fQoKbGwgcG93ZXIobGwgYixsbCBleHAsbGwgbSkge2xsIGFucz0xOyBiJT1tOyB3aGlsZShleHApe2lmKGV4cCYxKSBhbnM9KGFucypiKSVtOyBleHA+Pj0xOyBiPShiKmIpJW07IH0gcmV0dXJuIGFuczsgfQoKdmVjdG9yPHZlY3RvcjxpbnQ+ID5nOwpib29sIHZpc2l0ZWRbMTAwMl07CmludCBhWzEwMDJdOyAgCSAgCgp2b2lkIGRmc19yZWN1cihpbnQgc3RhcnQsdmVjdG9yPGludD4mIGNvbXAsdmVjdG9yPGludD4mIHBvcykKewoJdmlzaXRlZFtzdGFydF09MTsKCWNvbXAucHVzaF9iYWNrKGFbc3RhcnRdKTsKCXBvcy5wdXNoX2JhY2soc3RhcnQpOwoJaW50IHN6PWdbc3RhcnRdLnNpemUoKTsKCXJlcChpLDAsc3otMSkKCSBpZighdmlzaXRlZFtnW3N0YXJ0XVtpXV0pCgkgIGRmc19yZWN1cihnW3N0YXJ0XVtpXSxjb21wLHBvcyk7Cn0KCgp2b2lkIGRmcyhpbnQgc3RhcnQsaW50IG4pCnsKCXJlcChpLDEsbikgdmlzaXRlZFtpXT0wOwoJcmVwKGksMSxuKQoJewoJCWlmKCF2aXNpdGVkW2ldKQoJCXsKCQkgdmVjdG9yPGludD4gY29tcCxwb3M7CQoJCSBkZnNfcmVjdXIoaSxjb21wLHBvcyk7CgkJIGludCBzej1jb21wLnNpemUoKTsKCQkgLypjb3V0PDwiY29tcG9uZW50IC0+ICI7CgkJIHJlcChpLDAsc3otMSkgY291dDw8cG9zW2ldPDwiIC0gIjw8Y29tcFtpXTw8IiAiOwoJCSBjb3V0PDxlbmRsOyovCgkJIHNvcnQoY29tcC5iZWdpbigpLGNvbXAuZW5kKCkpOwoJCSByZXAoaSwwLHN6LTEpIGFbcG9zW2ldXT1jb21wW2ldOwoJICAgIH0KCX0KfQoKCmludCBtYWluKCkKewogIHRlc3QKICB7CiAgCWludCBuLG07CiAgCWluKGQsbiksaW4oZCxtKTsKCQkJCiAgCXJlcChpLDEsbikKICAJIGluKGQsYVtpXSk7CiAgCQogIAlnLnJlc2l6ZSgxMDAyKTsKCWcuY2xlYXIoKTsKCXJlcChpLDEsbSkKCXsKCQlpbnQgeCx5OwoJCWluKGQseCksaW4oZCx5KTsKCQlnW3hdLnB1c2hfYmFjayh5KSxnW3ldLnB1c2hfYmFjayh4KTsKCX0KCWRmcygxLG4pOwoJcmVwKGksMSxuKSBwcmludGYoIiVkICIsYVtpXSk7ICAgCiAgICBwcmludGYoIlxuIik7CiAgfQoKICByZXR1cm4gMDsKfQo=