using System; using System.Collections.Generic; using System.Collections; using System.Collections.Specialized; using System.Linq; using System.Text; using System.IO; using System.Reflection; using static System.Math; using System.Numerics; static class Program{ const int mod=(int)1e9+7; static void Main(){ Sc sc=new Sc(); var t=sc.S; int m=(t.Length)>>1; var ans=new int[t.Length]; ans[m]=1; int o=t.Length&1; for(int i = m-1;i>=0;i--) { var z=Ex.Za1(t,i); ans[t.Length-i-1]=1; ans[i]=1; for(int j = m+o;j=t.Length-i-j){ans[i]=(ans[i]+ans[t.Length-j])%mod;} } } Console.WriteLine("{0}",ans[0]); } } static class Ex{ static public int[] Za1(string s,int n){ var a=new int[s.Length]; for(int i=n+1,j=0;i=0;){ while(i-j>=0&&s[n-j]==s[i-j]){j++;} a[i]=j; if(j==0){i--;continue;} int k=1; while(i-k>=0&&k+a[n-k](int n,Func f){var a=new T[n];for(int i=0;i(int n,Func f){var a=new T[n];for(int i=0;i(int n,Func f){var a=new T[n];for(int i=0;i(int n,Func f){var a=new T[n];for(int i=0;i