{
	int@n,@m;
	VI@a(n);
	VI u(m),v(m);
	rd((u--,v--)(m));
	int@k;
	VI b(n);
	rep(k){
		int@bk;
		b[bk-1]=1;
	}
	graph g;
	g.setEdge(n,m,u.data(),v.data());

	VI a1=a;
	VI i1(n);
	rep(i,n) i1[i]=i;
	sortV(a1,i1);
	VI z;
	rep[i1](i,n){
		if(b[i]){
			z.push_back(i+1);
			rep[g.edge[i]](k,g.es[i]){
				if(a[i]<a[k]){
					b[k]^=1;
				}
			}
		}
	}
	int zs=z.size();
	wtLn(zs,z(zs));
}