
Общая информация по задачам
Во всех заданиях необходимо вывести остаток от деления количества искомых последовательностей на число \(10^9+7\).
В некоторых задачах установлено небольшое ограничение по памяти (например, 8 MiB).
В этих задачах нужно написать решение, не хранящее все вычисленные значения функции динамического программирования.
Необходимо хранить только последний вычисленный слой и новый слой значений функции,
то есть вместо (например) двумерного массива нужно хранить два одномерных массива,
в которых будут храниться значения функции для \(n=i\) и вычисляться новые значения функции для \(n = i + 1\).
Это можно сделать используя два вектора и меняя их значения местами при помощи функции swap.
В случае превышения лимита по памяти решение может получать статус «Ошибка исполнения» на тесте.