#include using LL = long long; const int N = 2e5 + 7; LL sum[N]; int n, m, a[N], set[N]; int find(int x) { return set[x] == x ? x : set[x] = find(set[x]); } void uni(int x, int y) { x = find(x); y = find(y); if(x != y) { sum[y] += sum[x]; set[x] = y; } } void solve() { scanf("%d%d", &n, &m); for(int i = 1; i <= n; ++i) { scanf("%d", &a[i]); if(i & 1) a[i] = -a[i]; } a[n + 1] = 0; for(int i = 1; i <= n + 1; ++i) { set[i] = i; sum[i] = a[i] - a[i - 1]; } while(m--) { int l, r; scanf("%d%d", &l, &r); uni(l, r + 1); } for(int i = 1; i <= n + 1; ++i) if(set[i] == i && sum[i]) { puts("NO"); return ; } puts("YES"); } int main() { int cases = 1; while(cases--) solve(); return 0; }