#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; void ZAlgorithm(const string& s, vector& len) { int n = s.size(); len.resize(n); if(n == 0) return; int i = 1; int j = 0; len[0] = n; while(i < n){ while(i+j < n && s[j] == s[i+j]) ++j; len[i] = j; if(j == 0){ ++ i; continue; } int k = 1; while (i+k < n && k+len[k] < j){ len[i+k] = len[k]; ++ k; } i += k; j -= k; } } const int MOD = 1000000007; int main() { string s; cin >> s; int n = s.size(); int ans = 0; vector dp(n/2+1, 0); dp[0] = 1; for(int i=0; i len; ZAlgorithm(t, len); for(int j=0; j