f=lambda:map(int,input().split()) n,m=f() *h,=f() G=[] 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) G.sort() p=[-1e9]*2*n p[0]=p[2*n-1]=1 k=0 for _,a,b in G: p[b]=max(p[b],p[a]+1) k=max(k,p[b%n]+p[b%n+n]) print(k-1)