Virtual contest is a way to take part in past contest, as close as possible to participation on time. It is supported only ICPC mode for virtual contests.
If you've seen these problems, a virtual contest is not for you - solve these problems in the archive.
If you just want to solve some problem from a contest, a virtual contest is not for you - solve this problem in the archive.
Never use someone else's code, read the tutorials or communicate with other person during a virtual contest.

No tag edit access

B. Minimum number of steps

time limit per test

1 secondmemory limit per test

256 megabytesinput

standard inputoutput

standard outputWe have a string of letters 'a' and 'b'. We want to perform some operations on it. On each step we choose one of substrings "ab" in the string and replace it with the string "bba". If we have no "ab" as a substring, our job is done. Print the minimum number of steps we should perform to make our job done modulo 10^{9} + 7.

The string "ab" appears as a substring if there is a letter 'b' right after the letter 'a' somewhere in the string.

Input

The first line contains the initial string consisting of letters 'a' and 'b' only with length from 1 to 10^{6}.

Output

Print the minimum number of steps modulo 10^{9} + 7.

Examples

Input

ab

Output

1

Input

aab

Output

3

Note

The first example: "ab" → "bba".

The second example: "aab" → "abba" → "bbaba" → "bbbbaa".

Codeforces (c) Copyright 2010-2019 Mike Mirzayanov

The only programming contests Web 2.0 platform

Server time: Oct/20/2019 18:05:56 (h3).

Desktop version, switch to mobile version.

Supported by

User lists

Name |
---|