// Укконен! void add(char x) { // поддерживаем ссылку на самый длинный не разветвившийся суффикс while нельзя спуститься { ; // создать развилку ; // перейти по суффссылке к след суффиксу } if можно спуститься спуститься } ST(s) for (char x : s) add(x)