P12923 [POI 2021/2022 R3] 模板 2 / Szablon 2

题目背景

翻译来自于 [LibreOJ](https://loj.ac/p/4860)。

题目描述

**题目译自 [XXIX Olimpiada Informatyczna – III etap](https://sio2.mimuw.edu.pl/c/oi29-3/dashboard/) [Szablon 2](https://szkopul.edu.pl/problemset/problem/4GJfmOVwv_koH74nf7IV3lr9/statement/)** Bajtazar 想在自家墙上写下一行长长的字。他决定先订做一个带有镂空字母的模板,然后将模板贴到墙上合适的位置,用喷漆涂抹,让墙上显现出模板上的字母。每次贴上模板,他都会涂满模板上的所有字母。他不介意某些字母被多次涂画(通过不同的模板位置),但每个位置的字母必须始终一致(否则字母叠加会毁了字迹)。模板上的字母是连续排列的,没有空隙。 Bajtazar 常去的模板供应商最近推出了一项超值优惠:订购一个镂空文字模板,就会免费附赠一个相同文字但反向镂空的模板(从右到左)。比如,如果他订购模板 `olimpiada`,就会收到 `olimpiada` 和 `adaipmilo` 两个模板。 Bajtazar 很好奇,想知道所有可能的模板订购方案(含赠品),让他能在墙上写出自己想要的文字。确切来说,他希望了解所有可能的模板长度。请你帮他解决这个问题!

输入格式

输入只有一行,包含一个由 $1$ 到 $1000000$ 个小写英文字母组成的单词,表示 Bajtazar 想写在墙上的文字。以下用 $n$ 表示这个单词的长度。

输出格式

输出一行,包含所有可能的模板长度,按升序排列,用单个空格分隔。即使某长度存在多个有效模板,也只需输出该长度一次。

说明/提示

**样例 1 解释** Bajtazar 可以订购模板 `abcab`,附赠模板为 `bacba`。通过合理摆放这两个模板,即可拼出输入的文字。箭头显示应该将哪个模板(订购的和附赠的)应用到墙上,以获得输入中的文字。 ![](https://cdn.luogu.com.cn/upload/image_hosting/ym84i5lg.png) **附加样例** 1. 该样例满足 $n=201$,文字为 $\texttt{a}^{100}\texttt{ba}^{100}$,模板长度为 $101, 102, 103, \ldots, 201$; 2. 该样例满足 $n=50000$,文字为 $(\texttt{ab})^{25000}$,模板长度为 $2, 4, 6, \ldots, 50000$。 详细子任务附加限制及分值如下表所示。 | 子任务编号 | 附加限制 | 分值 | | :---: | :--: | :---: | | $1$ | $n \leq 500$ | $15$ | | $2$ | $n \leq 5000$ | $25$ | | $3$ | $n \leq 100000$ | $40$ | | $4$ | 无附加限制 | $20$ |