code: def cross_index(values, index):
      
      lengths = [len(v) for v in values]
      length = np.product(lengths)
      if index >= length:
          raise IndexError('Index %d out of bounds for cross-product of size %d'
                           % (index, length))
      indexes = []
      for i in range(1, len(values))[::-1]:
          p = np.product(lengths[-i:])
          indexes.append(index//p)
          index -= indexes[-1] * p
      indexes.append(index)
      return tuple(v[i] for v, i in zip(values, indexes))
docs: Allows efficiently indexing into a cartesian product without
      expanding it. The values should be defined as a list of iterables
      making up the cartesian product and a linear index, returning
      the cross product of the values at the supplied index.