#include #include #include #include #include #include #include #include #include #include #include const int MOD = 1e9 + 7; const int iINF = 100000000; #define rep(i,n) for(int i=0;i<(n);i++) using namespace std; using ll = long long int; using P = pair; using edge = struct{int to; int cost;}; int N, M, a[1000]; vector graph[1000]; int main() { cin >> N >> M; rep(i, N) cin >> a[i]; rep(i, M) { int a, b; cin >> a >> b; a--; b--; graph[a].push_back(b); graph[b].push_back(a); } string ans = "NO"; rep(i, N) { set up, dn; for(auto to : graph[i]) { if(a[i] < a[to]) up.insert(a[to]); if(a[i] > a[to]) dn.insert(a[to]); } if(2 <= up.size() || 2 <= dn.size()) { ans = "YES"; break; } } cout << ans << endl; return 0; }