code: def _shortlistmergesorted(key=None, reverse=False, *iterables):
      
  
      if reverse:
          op = max
      else:
          op = min
      if key is not None:
          opkwargs = {'key': key}
      else:
          opkwargs = dict()
      # populate initial shortlist
      # (remember some iterables might be empty)
      iterators = list()
      shortlist = list()
      for iterable in iterables:
          it = iter(iterable)
          try:
              first = next(it)
              iterators.append(it)
              shortlist.append(first)
          except StopIteration:
              pass
      # do the mergesort
      while iterators:
          nxt = op(shortlist, **opkwargs)
          yield nxt
          nextidx = shortlist.index(nxt)
          try:
              shortlist[nextidx] = next(iterators[nextidx])
          except StopIteration:
              del shortlist[nextidx]
              del iterators[nextidx]
docs: Return a single iterator over the given iterables, sorted by the
      given `key` function, assuming the input iterables are already sorted by
      the same function. (I.e., the merge part of a general merge sort.) Uses
      :func:`min` (or :func:`max` if ``reverse=True``) for the underlying
      implementation.