f=lambda:map(int,input().split()) n,m,*G=f() *h,=f() for _ in[k:=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=[1,*[-4*n]*2*~-n,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)