def dda_ens(f_scores: np.ndarray, **kwargs) -> List[List[int]]:
    """
    dda_ens runs the DDA-ENS (efficient DDA) algorithm

    Parameters
    ----------
    f_scores : np.ndarray
        The N x M matrix of N (population size) objective function values for M objectives

    Returns
    -------
    List[List[int]]
        an N x M matrix of N (population size) objective function values for M objectives
    """
    d_mx = construct_domination_matrix(f_scores)

    fronts: List[List[int]] = []
    for s in np.lexsort(f_scores.T):
        isinserted = False
        for fk in fronts:
            if not (d_mx[fk, s] == f_scores.shape[1]).any():
                fk.append(s)
                isinserted = True
                break
        if not isinserted:
            fronts.append([s])
    return fronts

    dda_ens runs the DDA-ENS (efficient DDA) algorithm

    Parameters
    ----------
    f_scores : np.ndarray
        The N x M matrix of N (population size) objective function values for M objectives

    Returns
    -------
    List[List[int]]
        an N x M matrix of N (population size) objective function values for M objectives
    
pymoo/util/nds/dominance_degree_non_dominated_sort.py