code: def range_conflict(ranges, depth=1):
      
      overlap = set()
      active = set()
      endpoints = _make_endpoints(ranges)
  
      for seqid, ends in groupby(endpoints, lambda x: x[0]):
          active.clear()
          for seqid, pos, leftright, i, score in ends:
              if leftright == LEFT:
                  active.add(i)
              else:
                  active.remove(i)
  
              if len(active) > depth:
                  overlap.add(tuple(sorted(active)))
  
      for ov in overlap:
          yield ov
docs: Find intervals that are overlapping in 1-dimension.
      Return groups of block IDs that are in conflict.
  
      >>> ranges = [Range("2", 0, 1, 3, 0), Range("2", 1, 4, 3, 1), Range("3", 5, 7, 3, 2)]
      >>> list(range_conflict(ranges))
      [(0, 1)]