#include #include #include #include using namespace std; const int kMaxN = 1e6 + 10; char s[kMaxN]; int len = 0; int Next[kMaxN]; int main() { #ifdef local freopen("pro.in", "r", stdin); #endif scanf("%s", s + 1); len = strlen(s + 1); for (int i = 2, j = 0; i <= len; i++) { while (j > 0 && s[i] != s[j + 1]) j = Next[j]; if (s[i] == s[j + 1]) j++; Next[i] = j; } stack res; for (int p = len; p > 0; p = Next[p]) res.push(p); while(!res.empty()) { printf("%d\n",res.top()); res.pop(); } return 0; }