#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; #define FOR(i,a,b) for(int i=(a);i<(b);++i) #define REP(i,n) for(int i=0;i<(n);++i) #define foreach(itr,c) for(__typeof(c.begin()) itr=c.begin(); itr!=c.end(); itr++) int main(int argc, char const *argv[]) { int n,k; cin >>n >>k; vector p(n+1), a(n+1); for(int i=1; i<=n; ++i) p[i]=i; REP(i,k){ int x,y; scanf(" %d %d", &x, &y); swap(p[x],p[y]); } for(int i=1; i<=n; ++i) scanf(" %d", &a[i]); int pos[101]; for(int i=1; i<=n; ++i){ pos[a[i]]=i; } for(int i=1; i<=n; ++i) printf("%d ", pos[i]); printf("\n"); vector > ans; //posをaに一致させるために入れ替えを発生させる for(int i=1; i<=n; ++i){ //a[i]の値はposの何番目にあるか int p_index=0; for(int j=1; j<=n; ++j){ if(a[i]==pos[j]){ p_index=j; break; } } if(p_index>i){//indexを減らす方向にswapしていく for(int j=p_index; j>i; --j){ ans.push_back(make_pair(j-1,j)); swap(pos[j-1],pos[j]); } } else if(p_index