N,M = $stdin.gets.chomp.split(" ").map{ |a| a.to_i } lines = [] N.times { l,r = $stdin.gets.chomp.split(" ").map{ |a| a.to_i } lines << [l,r] } #p lines $connection = (0...lines.size).map { |i| l0,r0 = *lines[i] vl0,vr0 = M-1-r0,M-1-l0 (0...lines.size).map { |j| next nil if i == j l1,r1 = *lines[j] ok1 = (r0 < l1 || r1 < l0) ok2 = (vr0 < l1 || r1 < vl0) case when ok1 && !ok2; +1 when !ok1 && ok2; -1 when ok1 && ok2; nil when !ok1 && !ok2 puts "NO" exit end } } #p $connection $status = (0...N).map{ nil } def digger(i, expected = nil) if $status[i] if expected if expected != $status[i] puts "NO" exit end end return end $status[i] = expected || +1 $connection[i].each_with_index { |c,j| next unless c digger(j,$status[i]*c) } end (0...N).each { |i| digger(i) } puts "YES"