#include #include #include #include #include #include #include #include #include using namespace std; int Cat,x11,y11,maxi,Te,l,DD,TT,x,y,i,n,ap[100009],t[100009],T[100009][18],D[100009][18],pw[100009],h[100009],V[100009]; char a[100009]; vector < int > muc[100009],v[100009]; vector < int > :: iterator it; void dfs(int nod) { vector < int > :: iterator it; for(it=muc[nod].begin();it!=muc[nod].end();it++) if(ap[*it]==0) { ap[*it]=1; t[*it]=nod; h[*it]=h[nod]+1; v[nod].push_back(*it); dfs(*it); } } void Dp(int nod) { vector < int > :: iterator it; if(nod!=1) { V[nod]=(V[t[nod]]+1LL*pw[h[nod]-1]*a[nod])%y; T[nod][0]=t[nod]; D[nod][0]=a[t[nod]]; for(i=1;(1<=0;i--) if(poz&(1<maxi) maxi=h[i]; } else { Cat=h[i]/2; CC(i,Cat); if(DD==V[TT]&&h[i]>maxi) maxi=h[i]; } } printf("%d\n",maxi); } return 0; }