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

Задача . C. Орехус и строка


Орехус нашел строку \(s\), состоящую из латинских букв нижнего регистра. Орехус любознательный парень, поэтому ему стал интересен следующий вопрос: сколько существует строго возрастающих последовательностей \(p_1, p_2, \ldots, p_k\) таких, что:

  1. Для каждого \(i\) (\(1 \leq i \leq k\)), \(s_{p_i} =\) 'a'.
  2. Для каждого \(i\) (\(1 \leq i < k\)), существует \(j\), что \(p_i < j < p_{i + 1}\) и \(s_j =\) 'b'.

Удовлетворите любопытство Орехуса, или он расстроится.

Это число должно быть посчитано по модулю \(10^9 + 7\).

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

В первой строке входных данных находится строка \(s\) (\(1 \leq |s| \leq 10^5\)) из латинских букв нижнего регистра.

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

В единственной строке выведите ответ — число искомых последовательностей \(p_1, p_2, \ldots, p_k\) по модулю \(10^9 + 7\).

Примечание

В первом примере \(5\) допустимых последовательностей. \([1]\), \([4]\), \([5]\), \([1, 4]\), \([1, 5]\).

Во втором примере \(4\) допустимых последовательности. \([2]\), \([3]\), \([4]\), \([5]\).

В третьем примере \(3\) допустимых последовательности. \([1]\), \([3]\), \([4]\).


Примеры
Входные данныеВыходные данные
1 abbaa
5
2 baaaa
4
3 agaa
3

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

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