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-l0,M-1-r0 (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 } connection.each_with_index { |line,i| status[i] = status[i] || +1 line.each_with_index{ |c,j| case when i == j; next when c == +1 && status[j] == nil; status[j] = +status[i] when c == +1 && status[j] != status[i] puts "NO" exit when c == -1 && status[j] == nil; status[j] = -status[i] when c == -1 && status[j] == status[i] puts "NO" exit end } } #p status puts "YES"