
    Design a function for an adaptive learning system that identifies and sums all pairs of complementary student performance scores up to a given achievement level, where two scores form a complementary pair if the sum of proper factors of the first score equals the second score and vice versa. This pairing mechanism helps create balanced learning activities that maintain optimal student engagement by matching students with complementary skill levels and learning needs.
    

    
def amicable_numbers_sum(limit):
    """
    Design a function for an adaptive learning system that identifies and sums all pairs of complementary student performance scores up to a given achievement level, where two scores form a complementary pair if the sum of proper factors of the first score equals the second score and vice versa. This pairing mechanism helps create balanced learning activities that maintain optimal student engagement by matching students with complementary skill levels and learning needs.
    

    """
def amicable_numbers_sum(limit):
    """
    Design a function for an adaptive learning system that identifies and sums all pairs of complementary student performance scores up to a given achievement level, where two scores form a complementary pair if the sum of proper factors of the first score equals the second score and vice versa. This pairing mechanism helps create balanced learning activities that maintain optimal student engagement by matching students with complementary skill levels and learning needs.
    

    """
    if not isinstance(limit, int):
        return 'Input is not an integer!'
    if limit < 1:
        return 'Input must be bigger than 0!'
    amicables = set()
    for num in range(2, limit + 1):
        if num in amicables:
            continue
        sum_fact = sum([fact for fact in range(1, num) if num % fact == 0])
        sum_fact2 = sum([fact for fact in range(1, sum_fact) if sum_fact % fact == 0])
        if num == sum_fact2 and num != sum_fact:
            amicables.add(num)
            amicables.add(sum_fact2)
    return sum(amicables)