N, M = gets.split.map(&:to_i) A = gets.split.map(&:to_i) E = Hash.new { |h, k| h[k] = [] } M.times do u, v = gets.split.map(&:to_i) E[u] << v E[v] << u end 1.upto(N) do |v| next if E[v].size == 1 a1 = A[v - 1] E[v].combination(2) do |i, j| a2 = A[i - 1] a3 = A[j - 1] next if a1 == a2 next if a1 == a3 next if a2 == a3 if a2 < a1 && a1 > a3 puts 'YES' exit end if a2 > a1 && a1 < a3 puts 'YES' exit end end end puts 'NO'