#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { int i, j, k; long n, m; vectora(2005, -1); vector>v(17000, make_pair(999999, 999999)); vector>flag(1005, vector(1005, false)); vectorflag2(11111, false); cin >> n >> m; for (i = 1; i <= n; i++) { cin >> a[i]; } for (i = 0; i < m*2; i++) { long u1, u2; cin >> u1 >> u2; v[i].first = u1; v[i].second = u2; i++; v[i].first = u2; v[i].second = u1; } sort(v.begin(), v.end()); for (i = 0; i < m * 2; i++) { long num1, num2, num3; num1 = a[v[i].first]; flag2[v[i].first] = true; for (j = 0; j < m * 2; j++) { if (v[i].second == v[j].first && flag2[v[i].second] == false) { num2 = a[v[j].first]; flag2[v[j].first] = true; for (k = 0; k < m * 2; k++) { if (v[j].second == v[k].first && flag2[v[j].second]==false) { num3 = a[v[k].first]; //flag2[v[k].first] = true; //cout << "num1->" << num1 << "num2->" << num2 << "num3->" << num3 << endl; if (((num1num1)&&(num1>num2)) || ((num3num3)&&(num3>num2))) { cout << "YES" << endl; getchar(); getchar(); return 0; } } } flag2[v[j].first] = false; } } flag2[v[i].first] = false; } cout << "NO" << endl; getchar(); getchar(); return 0; }