#pragma GCC optimize("Ofast") #pragma GCC target("avx2") char*mmap(); #define RD(v) int v=0;{int c;while(c=*r++-48,c>=0)v=v*10+c;} #define RDL(v) long v=0;{int c;while(c=*r++-48,c>=0)v=v*10+c;} char wbuf[1024]; int a[1000],b[1000],c[1000]; char h1[1024],h2[1024]; main(){ char*r=mmap(0l,32l*1024,1,2,0,0ll); RD(n); RD(m); RD(k); for(int i=0;i<m;++i){ RD(ta); a[i]=ta; RD(tb); b[i]=tb; RD(tc); c[i]=tc; } memset(h1,1,1024); for(int t=0;t<k;++t){ memset(h2,0,1024); RD(d); for(int i=0;i<m;++i){ int f=c[i]==d; int ia=a[i]; int ib=b[i]; h2[ib]|=f&h1[ia]; h2[ia]|=f&h1[ib]; } memcpy(h1,h2,1024); } char*w=wbuf+sizeof wbuf; int z=0; for(int j=n+1;--j;){ if(h1[j]){ *--w=0x30+j%10; *--w=j>=10?0x30+j/10%10:0x20; *--w=j>=100?0x31:0x20; *--w=0x20; ++z; } } *--w=10; *--w=0x30+z%10; *--w=z>=10?0x30+z/10%10:0x20; *--w=z>=100?0x31:0x20; write(1,w,(wbuf+sizeof wbuf)-w); _exit(0); }