local n, m = io.read("*n", "*n") local t = {} local norm = {} local inv = {} for i = 1, n do local l, r = io.read("*n", "*n") t[i] = {l + 1, r + 1} end table.sort(t, function(x, y) if x[2] ~= y[2] then return x[1] < y[1] else return x[2] < y[2] end end) local used = {} for i = 1, m do used[i] = false end while 0 < #t do local v = t[#t] table.remove(t) local vl = v[1] table.insert(norm, v) for i = #t, 1, -1 do if vl <= t[i][2] then table.insert(inv, t[i]) table.remove(t) else break end end end local isok = true for i = 1, #norm do for j = norm[i][1], norm[i][2] do if used[j] then isok = false break else used[j] = true end end if not isok then break end end for i = 1, #inv do local l = m + 1 - inv[i][2] local r = m + 1 - inv[i][1] for j = l, r do if used[j] then isok = false break else used[j] = true end end if not isok then break end end print(isok and "YES" or "NO")