'''
Мой на основе моего из сборника
№ 16.24 (). Алгоритм вычисления функций F(n) и G(n), где n — целое число, задан следующими
соотношениями:

F(n) = G(n) = 2*n при n ⩽ 5;
F(n) = F(n − 2) − 2 · G(n − 1) при n > 5;
G(n) = F(n − 1) + G(n − 1) − 10n при n > 5:

Чему равно значение выражения F(2026) % G(26)?

Где значение x % y равно остатку от деления числа $x$ на $y$.

'''

from sys import setrecursionlimit
from functools import lru_cache

setrecursionlimit(2026)

@lru_cache
def F(n):
    if n <= 5:
        return 2*n
    return F(n-2) - 2*G(n-1)

@lru_cache
def G(n):
    if n <= 5:
        return 2*n
    return F(n-1) + G(n-1) - 10*n


res = F(2026) % G(24)
#print(F(2026))
#print(G(24))
print(res)  # 16364 

