The Fair Nut found a string s. The string consists of lowercase Latin letters. The Nut is a curious guy, so he wants to find the number of strictly increasing sequences p1,p2,…,pk
, such that:
- For each i
(1≤i≤k), spi=
- 'a'.
- For each i
- (1≤i<k), there is such j that pi<j<pi+1 and sj=
- 'b'.
The Nut is upset because he doesn't know how to find the number. Help him.
This number should be calculated modulo 109+7
.
Input
The first line contains the string s
(1≤|s|≤105
) consisting of lowercase Latin letters.
Output
In a single line print the answer to the problem — the number of such sequences p1,p2,…,pk
modulo 109+7
.
Examples
Input
abbaa
Output
5
Input
baaaa
Output
4
Input
agaa
Output
3
Note
In the first example, there are 5
possible sequences. [1], [4], [5], [1,4], [1,5].
In the second example, there are 4
possible sequences. [2], [3], [4], [5].
In the third example, there are 3
possible sequences. [1], [3], [4].
题意:求多少个上升子序列,满足假设集合(a1,a2,a3) s[a1]=s[a2]=s[a3]='a' && 存在a1<k1<a2<k2<a3 s[k1]=s[k2]='b'
题解:记录每个连续的a序列a的个数 b为分界线,乘起来即可
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
typedef long long ll;
const ll mod=1e9+7;
char s[100010];
int main()
{
scanf("%s",s+1);
int len=strlen(s+1);
ll ans=1,cnt=1;
for(int i=1;i<=len;i++)
{
if(s[i]=='a') cnt++;
else if(s[i]=='b')
{
ans=(ans*cnt)%mod;
cnt=1;
}
}
ans=(ans*cnt)%mod;
cout<<ans-1<<endl;
return 0;
}