code: @Override
    public Assignments<E> split(AbstractMTree<?, N, E, ?> tree, N node) {
      final int n = node.getNumEntries();
      double[][] distanceMatrix = computeDistanceMatrix(tree, node);
  
      double miSumCR = Double.POSITIVE_INFINITY;
      boolean leaf = node.isLeaf();
      Assignments<E> bestAssignment = null;
      for(int i = 0; i < n; i++) {
        for(int j = i + 1; j < n; j++) {
          Assignments<E> currentAssignments = distributor.distribute(node, i, distanceMatrix[i], j, distanceMatrix[j]);
  
          double maxCR = Math.max(currentAssignments.computeFirstCover(leaf), currentAssignments.computeSecondCover(leaf));
          if(maxCR < miSumCR) {
            miSumCR = maxCR;
            bestAssignment = currentAssignments;
          }
        }
      }
      return bestAssignment;
    }
docs: Selects two objects of the specified node to be promoted and stored into
  the parent node. The mM-RAD strategy considers all possible pairs of
  objects and, after partitioning the set of entries, promotes the pair of
  objects for which the larger of the two covering radiuses is minimum.
  
  @param tree Tree to use
  @param node the node to be split