#include #include #include using namespace std; const int maxn=10005; int T,n,m,u[maxn],v[maxn],id[maxn],vis[maxn],fa[maxn*2]; bool cr(int x1, int x2, int y1, int y2) { if(x1==x2||y1==y2||x1==y2||x2==y1) return 0; return (x10) { scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) scanf("%d%d",&u[i],&v[i]); for(int i=1;i<=n;i++) { int x; scanf("%d",&x); id[x]=i; } if(m>3*n-6) { puts("NO"); continue; } for(int i=1;i<=m;i++) { int x=id[u[i]],y=id[v[i]]; if(x>y) swap(x,y); u[i]=x; v[i]=y; } for(int i=1;i<=m;i++) vis[i]=(u[i]%n+1==v[i]); for(int i=1;i<=m*2;i++) fa[i]=i; for(int i=1;i<=m;i++) { if(vis[i]) continue; for(int j=1;j<=m;j++) { if(vis[j]) continue; if(!cr(u[i],u[j],v[i],v[j])) continue; if(ff(i)==ff(j)) { puts("NO"); goto nxt; } merge(i,j+m); merge(j,i+m); } } puts("YES"); nxt:; } return 0; }