def balanced(config, n):
    """
    Slightly different version of Zeller's split. This version keeps the split
    balanced by distributing the residuals of the integer division among all
    chunks. This way, the size of the chunks in the resulting split is not
    monotonous.

    :param config: The configuration to split.
    :param n: The number of sets the configuration will be split up to.
    :return: List of the split sets.
    """
    return [config[len(config) * i // n: len(config) * (i + 1) // n] for i in range(n)]