#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; #define i_7 1000000007 #define i_5 1000000005 ll mod(ll a){ ll c=a%i_7; if(c>=0)return c; else return c+i_7; } typedef pair i_i; typedef pair l_l; #define inf 100000000/*10^8*/ #define rep(i,l,r) for(int i=l;i<=r;i++) const double EPS=1E-8; //////////////////////////////////////// int main(){ int n,k;cin>>n>>k; int pos[n+1];rep(i,1,n)pos[i]=i; while(k--){ int x,y;cin>>x>>y; swap(pos[x],pos[y]); } /* int b[n+1];rep(i,1,n)cin>>b[i]; int a[n+1]; rep(i,1,n){ rep(j,1,n){ if(b[j]==i){ a[i]=j; break; } } }*/ int a[n+1]; rep(i,1,n){ int z; cin>>z; a[z]=i; } int count=0; vector ans; rep(q,1,n){ int i=a[q]; int j=1,k=1; while(a[j]!=i)j++; while(pos[k]!=i)k++; while(k>j){ ans.push_back(make_pair(k-1, k)); count++; swap(pos[k-1],pos[k]); k=k-1; } while(k