f=lambda:map(int,input().split()) n,m,*G=f() *h,=f() for _ in[0]*m: a,b=f();a-=1;b-=1 if h[a]>h[b]:a,b=b,a G+=(h[a],a,b),(h[a],a+n,b+n) p=[-n]*2*n p[k:=0]=p[-1]=1 for _,a,b in sorted(G):p[b]=max(p[b],p[a]+1);k=max(k,p[b]+p[b-n]) print(k-1)