def main(): N, M = map(int, input().split()) A = tuple(map(int, input().split())) UV = tuple(tuple(map(int, input().split())) for _ in [0] * M) a = [0] * (N + 1) for i, j in enumerate(A): a[i+1] = j edge = [set() for _ in [0] * (N + 1)] for u, v in UV: edge[u].add(a[v]) edge[v].add(a[u]) for i in range(1, N + 1): if len(edge[i]) > 1: n = sorted(edge[i]) if any((a[i] < n[-2], a[i] > n[1])): print('YES') break else: print('NO') main()