func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e6 + 10, p = 1e9 + 7;   map<int, int> mp;   char s[N];   inline void A(int &x, int y) { x = (x + y >= p ? x + y - p : x + y); }   inline void Append(int w) {     int v1 = 0, v2 = 0;     map<int, int>::iterator it;     for (it = mp.begin(); it != mp.end() && it->first <= w; ++it) {       A(v1, it->second);       v2 = (v2 + 1ll * it->second * (w - it->first + 1)) % p;     }     mp.erase(mp.begin(), it);     A(mp[w + 1], v1);     mp[0] = v2;   }   int main() {     scanf( %s , s + 1);     int ln = 1, rn = strlen(s + 1);     int time_l = 1, time_r = 1;     while (s[ln] ==  0 ) ++time_l, ++ln;     if (ln > rn) {       printf( %d n , rn);       return 0;     }     while (s[rn] ==  0 ) ++time_r, --rn;     mp[0] = 1;     while (ln != rn) {       ++ln;       int w = 0;       while (s[ln] ==  0 ) ++ln, ++w;       Append(w);     }     int ans = 0;     for (auto x : mp) A(ans, x.second);     printf( %lld n , 1ll * ans * time_l % p * time_r % p);     return 0;   }   