CSES - Same sum

You are given a list of integers. Your task is to find if the list can be partitioned into two lists so that both lists have the same sum.

For example, the list [1,2,3,4] can be partitioned into the lists [1,4] and [2,3], both of which have the sum 5. On the other hand, the list [1,2,3,5] cannot be partitioned into two lists with the same sum.

In a file samesum.py, implement the function check_sum that takes a list of integers as a parameter. The function should return True if a valid partitioning exists, and False otherwise.

You may assume that the length of the list is in the range 1 \dots 10. The function should be efficient in all such cases.

def check_sum(numbers):
    # TODO

if __name__ == "__main__":
    print(check_sum([1, 2, 3, 4])) # True
    print(check_sum([1, 2, 3, 5])) # False
    print(check_sum([0])) # True
    print(check_sum([2, 2])) # True
    print(check_sum([2, 4])) # False
    print(check_sum([1, 5, 6, 3, 5])) # True
    print(check_sum([1, 5, 5, 3, 5])) # False
    print(check_sum([10**9, 2*10**9, 10**9])) # True
    print(check_sum([1, 1, 1, 1, 1, 1, 1, 1, 1, 123])) # False