Виртуальное соревнование – это способ прорешать прошедшее соревнование в режиме, максимально близком к участию во время его проведения. Поддерживается только ICPC режим для виртуальных соревнований.
Если вы раньше видели эти задачи,
виртуальное соревнование не для вас – решайте эти задачи в архиве.
Если вы хотите просто дорешать задачи, виртуальное соревнование не для вас – решайте эти задачи в архиве.
Запрещается использовать чужой код, читать разборы задач и общаться по содержанию соревнования с кем-либо.
Посчитайте значение суммы nmod1 + nmod2 + nmod3 + ... + nmodm. Поскольку ответ может быть достаточно большим, вам нужно посчитать его по модулю 109 + 7 (остаток при делении на число 109 + 7).
Оператор модуля amodb обозначает взятие остатка при делении числа a на число b. Например, 10mod3 = 1.
Входные данные
В единственной строке находятся два целых числа n, m (1 ≤ n, m ≤ 1013) — параметры суммы.
Выходные данные
Выведите целое число s — остаток значения искомой суммы при делении на число 109 + 7.