Untitled

                Never    
# переменная для результата
mx = 0 
# 2 перменных для пары чисел делимых на 112 без остатка
max_112, max_112_2 = -1, -1
# 2 перменных для пары чисел делимых на 56
max_56, max_56_2 = -1, -1

N = int(input())
# массив для чисел не делимых на 112( где как индекс их остатки)
a = [-1] * 112
# ввод чисел
for i in range(N):
    x = int(input())
    # запысваем в массив с остатками это число 
    a[x % 112] = x 
    # если число делится на 112 запоминаем его сразу
    if x % 112 == 0:
        # число которое могло быть найдено на прошлой итерации запоминаем во вторую переменную
        max_112_2 = max_112
        max_112 = x
    # если число делится на 112 делаем тоже самое
    if x % 112 == 56:
        max_56_2 = max_56
        max_56 = x
# начинаем складывать остатки и запоминаем его в mx
for i in range(1, 56):
    #остатки складываем симметрично, чтобы оно давало 112 (1-111, 2-110,3-109,4-108 ...)
    # если ловим  -1 значит не было числа с таким остатком, пару эту сразу пропускаем[5 , -1 например]
    # запоминаем в mx только максимальную
    if a[i] + a[112 - i] > mx and a[i] != -1 and a[112 - i] != -1:
        mx = a[i] + a[112 - i]
# теперь сравниваем суммы чисел делимых на 112 с mx
if max_112 + max_112_2 > mx and max_112 != -1 and max_112_2 != -1:
    mx = max_112 + max_112_2
# теперь сравниваем суммы чисел делимых на 56 с текущим mx
if max_56 + max_56_2 > mx and max_56 != -1 and max_56_2 != -1:
    mx = max_56 + max_56_2
    
if mx == 0:
print(-1)
else:
print(mx)

Raw Text