#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i, m, n) for(int i=int(m);i > e; vector a; int main() { cin.tie(0); ios::sync_with_stdio(false); int N,M; cin >> N >> M; rep(i,0,N){ int tmp; cin >> tmp; a.push_back(tmp); } rep(i,0,M){ int from,to; cin >> from >> to; from--; to--; e.emplace_back(from,to); } rep(i,0,M){ rep(j,1,M){ int A = e[i].first; int B = e[i].second; int C = e[j].first; int D = e[j].second; if(A == C){ int v1 = a[B]; int v2 = a[A]; int v3 = a[D]; if(v1 != v3){ if( (v1 < v2 && v3 < v2) || (v1 > v2 && v3 > v2)){ cout << "YES" << endl; return 0; } } } if(A == D){ int v1 = a[B]; int v2 = a[A]; int v3 = a[C]; if(v1 != v3){ if( (v1 < v2 && v3 < v2) || (v1 > v2 && v3 > v2)){ cout << "YES" << endl; return 0; } } } if(B == C){ int v1 = a[A]; int v2 = a[B]; int v3 = a[D]; if(v1 != v3){ if( (v1 < v2 && v3 < v2) || (v1 > v2 && v3 > v2)){ cout << "YES" << endl; return 0; } } } if(B == D){ int v1 = a[A]; int v2 = a[B]; int v3 = a[C]; if(v1 != v3){ if( (v1 < v2 && v3 < v2) || (v1 > v2 && v3 > v2)){ cout << "YES" << endl; return 0; } } } } } cout << "NO" << endl; return 0; }