#include<bits/stdc++.h>
using namespace std;
const int MAXN=200005;
bool vis[MAXN];
vector<int> g[MAXN],ord;
void dfs(int u)
{
if(vis[u])return;
vis[u]=1;
for(auto& v : g[u])dfs(v);
ord.push_back(u);
}
int p[MAXN],res[MAXN];
vector<pair<int,int>> e[MAXN];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&p[i]);
for(int i=1;i<=m;i++)
{
int u,v;
scanf("%d%d",&u,&v);
e[u].emplace_back(v,i);
e[v].emplace_back(u,i);
}
for(int i=1;i<=n;i++)
{
if(vis[i])continue;
vector<int> cir;
int t=i;
do
{
cir.push_back(t);
vis[t]=1;
t=p[t];
}
while(!vis[t]);
for(size_t j=0;j<cir.size();j++)
res[cir[j]]=j;
for(auto u : cir)
{
sort(e[u].begin(),e[u].end(),[&](auto& x,auto& y){
return (res[x.first]-res[u]+cir.size())%cir.size()
< (res[y.first]-res[u]+cir.size())%cir.size();
});
for(size_t j=0;j+1<e[u].size();j++)
g[e[u][j].second].push_back(e[u][j+1].second);
}
}
memset(vis,0,(m+1)*sizeof(vis[0]));
for(int i=1;i<=m;i++)
if(!vis[i])dfs(i);
reverse(ord.begin(),ord.end());
for(int i=0;i<m;i++)
printf("%d%c",ord[i]," \n"[i+1==m]);
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgaW50IE1BWE49MjAwMDA1Owpib29sIHZpc1tNQVhOXTsKdmVjdG9yPGludD4gZ1tNQVhOXSxvcmQ7CnZvaWQgZGZzKGludCB1KQp7CglpZih2aXNbdV0pcmV0dXJuOwoJdmlzW3VdPTE7Cglmb3IoYXV0byYgdiA6IGdbdV0pZGZzKHYpOwoJb3JkLnB1c2hfYmFjayh1KTsKfQppbnQgcFtNQVhOXSxyZXNbTUFYTl07CnZlY3RvcjxwYWlyPGludCxpbnQ+PiBlW01BWE5dOwppbnQgbWFpbigpCnsKCWludCBuLG07CglzY2FuZigiJWQlZCIsJm4sJm0pOwoJZm9yKGludCBpPTE7aTw9bjtpKyspCgkJc2NhbmYoIiVkIiwmcFtpXSk7Cglmb3IoaW50IGk9MTtpPD1tO2krKykKCXsKCQlpbnQgdSx2OwoJCXNjYW5mKCIlZCVkIiwmdSwmdik7CgkJZVt1XS5lbXBsYWNlX2JhY2sodixpKTsKCQllW3ZdLmVtcGxhY2VfYmFjayh1LGkpOwoJfQoJZm9yKGludCBpPTE7aTw9bjtpKyspCgl7CgkJaWYodmlzW2ldKWNvbnRpbnVlOwoJCXZlY3RvcjxpbnQ+IGNpcjsKCQlpbnQgdD1pOwoJCWRvCgkJewoJCQljaXIucHVzaF9iYWNrKHQpOwoJCQl2aXNbdF09MTsKCQkJdD1wW3RdOwoJCX0KCQl3aGlsZSghdmlzW3RdKTsKCQlmb3Ioc2l6ZV90IGo9MDtqPGNpci5zaXplKCk7aisrKQoJCQlyZXNbY2lyW2pdXT1qOwoJCWZvcihhdXRvIHUgOiBjaXIpCgkJewoJCQlzb3J0KGVbdV0uYmVnaW4oKSxlW3VdLmVuZCgpLFsmXShhdXRvJiB4LGF1dG8mIHkpewoJCQkJcmV0dXJuIChyZXNbeC5maXJzdF0tcmVzW3VdK2Npci5zaXplKCkpJWNpci5zaXplKCkKCQkJCQkgPCAocmVzW3kuZmlyc3RdLXJlc1t1XStjaXIuc2l6ZSgpKSVjaXIuc2l6ZSgpOwoJCQl9KTsKCQkJZm9yKHNpemVfdCBqPTA7aisxPGVbdV0uc2l6ZSgpO2orKykKCQkJCWdbZVt1XVtqXS5zZWNvbmRdLnB1c2hfYmFjayhlW3VdW2orMV0uc2Vjb25kKTsKCQl9Cgl9CgltZW1zZXQodmlzLDAsKG0rMSkqc2l6ZW9mKHZpc1swXSkpOwoJZm9yKGludCBpPTE7aTw9bTtpKyspCgkJaWYoIXZpc1tpXSlkZnMoaSk7CglyZXZlcnNlKG9yZC5iZWdpbigpLG9yZC5lbmQoKSk7Cglmb3IoaW50IGk9MDtpPG07aSsrKQoJCXByaW50ZigiJWQlYyIsb3JkW2ldLCIgXG4iW2krMT09bV0pOwoJcmV0dXJuIDA7Cn0=