#include<bits/stdc++.h>
using namespace std;
int n,k,a[310000];
int x,y,p[310000];
int cnt,ans[310000];
int bel[310000],ind[310000];
bool flag[310000];
vector<int> nxt[310000];
queue<int> q;
int main(){ 
 scanf("%d%d",&n,&k);
 for (int i=1;i<=n;i++) scanf("%d",&a[i]);
 for (int i=1;i<=k;i++){
  scanf("%d%d",&x,&y);
  p[x]=y; flag[y]=true;
 }
 int u=0;
 for (int i=1;i<=n;i++)
  if (!flag[i]){
   for (int j=i;j;j=p[j]){
    bel[j]=i;
    if (a[j]&&bel[a[j]]!=i){
     nxt[a[j]].push_back(i);
     ind[i]++;
    }
   }
   if (!ind[i]) u=i;
  }
 if (u) q.push(u);
 while (!q.empty()){
  u=q.front(); q.pop();
  for (;u;u=p[u]){
   ans[++cnt]=u;
   for (int i=0;i<(int)nxt[u].size();i++)
    if (!(--ind[nxt[u][i]])) q.push(nxt[u][i]);
  }
 }
 if (cnt!=n) puts("0");
 else{
  for (int i=1;i<n;i++) printf("%d ",ans[i]);
  printf("%d\n",ans[n]);
 }
 return 0;
}