#include #include #include #include #include #include #include #include #include #include static const int MOD = 1000000007; using ll = long long; using u32 = unsigned; using u64 = unsigned long long; using namespace std; template constexpr T INF = ::numeric_limits::max()/32*15+208; int main() { int n, m; cin >> n >> m; vector> v(n); vector cnt(m); for (int i = 0; i < n; ++i) { int l, r; scanf("%d %d", &l, &r); if(l <= m-1-r){ v[i] = {l, r}; }else { v[i] = {m-1-r, m-1-l}; } } sort(v.begin(),v.end()); for (int i = 0; i < n; ++i) { int l, r; tie(l, r) = v[i]; int ok = 1; for (int j = l; j <= r; ++j) { if(cnt[j]) { ok = 0; break; } } if(ok){ for (int j = l; j <= r; ++j) cnt[j] = 1; }else { for (int j = m-1-r; j <= m-1-l; ++j) { if(cnt[j]){ puts("NO"); return 0; } cnt[j] = 1; } } } puts("YES"); return 0; }