Олимпиадный тренинг

Задача . E. Сплошные плюсы


Вася сидит на невыносимо скучном уроке математики. Чтобы развлечься, он выписал на листок бумаги n цифр в одну строку. После этого Вася стал выписывать разные способы поставить в строке между некоторыми цифрами плюсы («+») таким образом, чтобы получалось корректное арифметическое выражение; формально, никакие два плюса в таком разбиении не должны стоять рядом (между любыми двумя соседними плюсами должна стоять хотя бы одна цифра), и никакой плюс не может стоять в начале или в конце строки. Например, в строке 100500, способы 100500 (не ставить плюсов совсем), 1+00+500 или 10050+0 являются корректными, а способы 100++500, +1+0+0+5+0+0 или 100500+ являются некорректными.

Урок был длинным, и Вася выписал все корректные способы расставить в своей строке из цифр ровно k плюсов. В этот момент его развлечение было замечено, и Вася получил задание до конца урока вычислить сумму значений всех получившихся арифметических выражений (при вычислении значения выражения ведущие нули в слагаемых следует игнорировать). Поскольку ответ может быть большим, Васе разрешили всего лишь получить остаток от деления ответа на 109 + 7.

Входные данные

В первой строке записано два целых числа n и k (0 ≤ k < n ≤ 105).

Во второй строке записана строка, состоящая из n цифр.

Выходные данные

Выведите ответ на задачу по модулю 109 + 7.

Примечание

В первом примере результат равен (1 + 08) + (10 + 8) = 27.

Во втором примере результат равен 1 + 0 + 8 = 9.


Примеры
Входные данныеВыходные данные
1 3 1
108
27
2 3 2
108
9

time 3000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя