def find_cypher_weakness_part_1(data):
    """
    Finds a weakness in the cypher (a number that doesn't follow the rules).

    RULES
    - Preamble of 25 numbers
    - After the preamble, each number should sum to any two of the 25 previous numbers
    - No two numbers will be the same (no 10 and 10)
    - There may be duplicate sums (10+15 and 10+15)

    Find the number which is not the sum of two of the 25 numbers before it
    """
    # Setup the initial preamble
    preamble = []
    for number in data[:25]:
        preamble.append(number)

    # Sum all pairs in preamble
    for number in data[25:]:
        sum_list = []
        for preamble_number_1 in preamble:
            for preamble_number_2 in preamble:
                # No two numbers can be the same in a pair
                if preamble_number_1 == preamble_number_2:
                    continue
                sum_list.append(int(preamble_number_1) + int(preamble_number_2))
        # Check against a set to improve performance
        if int(number) not in set(sum_list):
            return int(number)

        # Shift the preamble by one number
        preamble.append(number)
        del preamble[0]