시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 1024 MB105450.000%

문제

두 문자열 $S$와 $P$에 대해, $S$에서 $P$가 등장하는 횟수를 나타내는 함수 $f(S, P)$가 있다. 즉 $f(S, P)$는 $P$가 $S$에서 연속한 부분 문자열로 등장하는 횟수를 나타낸다. 예를 들어 $f($"ababa"$,$"aba"$) = 2$이고, $f($"aaaaa"$,$"aa"$) = 4$이다.

여기에 더해서, 어떤 문자열 $S$에 대해서 가능한 모든 문자열의 등장횟수 제곱의 합을 나타내는 함수 $g(S)$가 있다. 즉, $g(S)$는 가능한 모든 문자열 $P$에 대해서 $[f(S,P)]^2$의 합을 구한 값이다.

$N$개의 문자로 이루어진 문자열 $S = c_1c_2 \cdots c_N$이 주어진다. $R_i = g(c_1c_2 \cdots c_i)$ ($S$의 처음 $i$자리에 대한 등장횟수 제곱의 합)이라고 하면, $R$값의 변화치를 통해 문자열의 뒤쪽에 한 글자가 추가될 때 마다 새롭게 찾을 수 있는 부분문자열이 얼마나 많아지는지 짐작해볼 수 있다. 이를 위해 $R_1$에서 $R_N$까지를 모두 구하는 프로그램을 작성하라.

입력

첫 번째 줄에 길이가 $1$이상 $10^5$이하인 문자열 $S$가 주어진다. $S$는 알파벳 소문자 만으로 구성된다.

출력

$N$개의 줄에 걸쳐 정답을 출력한다. $i$번째 줄에는 $R_i$만이 출력되어야 한다.

예제 입력 1

aaa

예제 출력 1

1
5
14

예제 입력 2

pqpq

예제 출력 2

1
3
8
16

예제 입력 3

stssts

예제 출력 3

1
3
8
16
25
41
W3sicHJvYmxlbV9pZCI6IjE5Mjk5IiwicHJvYmxlbV9sYW5nIjoiMCIsInRpdGxlIjoiTmV3IE9jY3VycmVuY2VzIiwiZGVzY3JpcHRpb24iOiI8cD5cdWI0NTAgXHViYjM4XHVjNzkwXHVjNWY0ICRTJFx1YzY0MCAkUCRcdWM1ZDAgXHViMzAwXHVkNTc0LCAkUyRcdWM1ZDBcdWMxMWMgJFAkXHVhYzAwIFx1YjRmMVx1YzdhNVx1ZDU1OFx1YjI5NCBcdWQ2OWZcdWMyMThcdWI5N2MgXHViMDk4XHVkMGMwXHViMGI0XHViMjk0IFx1ZDU2OFx1YzIxOCZuYnNwOyRmKFMsIFApJFx1YWMwMCBcdWM3ODhcdWIyZTQuIFx1Yzk4OSZuYnNwOyRmKFMsIFApJFx1YjI5NCAkUCRcdWFjMDAgJFMkXHVjNWQwXHVjMTFjIFx1YzVmMFx1YzE4ZFx1ZDU1YyBcdWJkODBcdWJkODQgXHViYjM4XHVjNzkwXHVjNWY0XHViODVjIFx1YjRmMVx1YzdhNVx1ZDU1OFx1YjI5NCBcdWQ2OWZcdWMyMThcdWI5N2MgXHViMDk4XHVkMGMwXHViMGI4XHViMmU0LiBcdWM2MDhcdWI5N2MgXHViNGU0XHVjNWI0Jm5ic3A7JGYoJCZxdW90Ozxjb2RlPmFiYWJhPFwvY29kZT4mcXVvdDskLCQmcXVvdDs8Y29kZT5hYmE8XC9jb2RlPiZxdW90OyQpID0gMiRcdWM3NzRcdWFjZTAsJm5ic3A7JGYoJCZxdW90Ozxjb2RlPmFhYWFhPFwvY29kZT4mcXVvdDskLCQmcXVvdDs8Y29kZT5hYTxcL2NvZGU+JnF1b3Q7JCkgPSA0JFx1Yzc3NFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNWVjXHVhZTMwXHVjNWQwIFx1YjM1NFx1ZDU3NFx1YzExYywgXHVjNWI0XHViNWE0IFx1YmIzOFx1Yzc5MFx1YzVmNCAkUyRcdWM1ZDAgXHViMzAwXHVkNTc0XHVjMTFjIFx1YWMwMFx1YjJhNVx1ZDU1YyBcdWJhYThcdWI0ZTAgXHViYjM4XHVjNzkwXHVjNWY0XHVjNzU4IFx1YjRmMVx1YzdhNVx1ZDY5Zlx1YzIxOCBcdWM4MWNcdWFjZjFcdWM3NTggXHVkNTY5XHVjNzQ0IFx1YjA5OFx1ZDBjMFx1YjBiNFx1YjI5NCBcdWQ1NjhcdWMyMTggJGcoUykkXHVhYzAwIFx1Yzc4OFx1YjJlNC4gXHVjOTg5LCAkZyhTKSRcdWIyOTQmbmJzcDtcdWFjMDBcdWIyYTVcdWQ1NWMgXHViYWE4XHViNGUwIFx1YmIzOFx1Yzc5MFx1YzVmNCAkUCRcdWM1ZDAgXHViMzAwXHVkNTc0XHVjMTFjJm5ic3A7JFtmKFMsUCldXjIkXHVjNzU4IFx1ZDU2OVx1Yzc0NCBcdWFkNmNcdWQ1NWMgXHVhYzEyXHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48cD4kTiRcdWFjMWNcdWM3NTgmbmJzcDtcdWJiMzhcdWM3OTBcdWI4NWMgXHVjNzc0XHViOGU4XHVjNWI0XHVjOWM0IFx1YmIzOFx1Yzc5MFx1YzVmNCZuYnNwOyRTID0gY18xY18yIFxcY2RvdHMgY19OJFx1Yzc3NCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuJm5ic3A7JFJfaSA9IGcoY18xY18yIFxcY2RvdHMgY19pKSQgKCRTJFx1Yzc1OCBcdWNjOThcdWM3NGMgJGkkXHVjNzkwXHViOWFjXHVjNWQwIFx1YjMwMFx1ZDU1YyBcdWI0ZjFcdWM3YTVcdWQ2OWZcdWMyMTggXHVjODFjXHVhY2YxXHVjNzU4IFx1ZDU2OSlcdWM3NzRcdWI3N2NcdWFjZTAgXHVkNTU4XHViYTc0LCAkUiRcdWFjMTJcdWM3NTggXHViY2MwXHVkNjU0XHVjZTU4XHViOTdjIFx1ZDFiNVx1ZDU3NCBcdWJiMzhcdWM3OTBcdWM1ZjRcdWM3NTggXHViNGE0XHVjYWJkXHVjNWQwIFx1ZDU1YyBcdWFlMDBcdWM3OTBcdWFjMDAgXHVjZDk0XHVhYzAwXHViNDIwIFx1YjU0YyBcdWI5YzhcdWIyZTQgXHVjMGM4XHViODZkXHVhYzhjIFx1Y2MzZVx1Yzc0NCBcdWMyMTggXHVjNzg4XHViMjk0IFx1YmQ4MFx1YmQ4NFx1YmIzOFx1Yzc5MFx1YzVmNFx1Yzc3NCBcdWM1YmNcdWI5YzhcdWIwOTggXHViOWNlXHVjNTQ0XHVjOWMwXHViMjk0XHVjOWMwIFx1YzlkMFx1Yzc5MVx1ZDU3NFx1YmNmYyBcdWMyMTggXHVjNzg4XHViMmU0LiBcdWM3NzRcdWI5N2MgXHVjNzA0XHVkNTc0ICRSXzEkXHVjNWQwXHVjMTFjICRSX04kXHVhZTRjXHVjOWMwXHViOTdjIFx1YmFhOFx1YjQ1MCZuYnNwO1x1YWQ2Y1x1ZDU1OFx1YjI5NCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NDQgXHVjNzkxXHVjMTMxXHVkNTU4XHViNzdjLjxcL3A+XHJcbiIsImlucHV0IjoiPHA+XHVjY2FiIFx1YmM4OFx1YzlmOCBcdWM5MDRcdWM1ZDAgXHVhZTM4XHVjNzc0XHVhYzAwICQxJFx1Yzc3NFx1YzBjMSAkMTBeNSRcdWM3NzRcdWQ1NThcdWM3NzggXHViYjM4XHVjNzkwXHVjNWY0ICRTJFx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuICRTJFx1YjI5NCBcdWM1NGNcdWQzMGNcdWJjYjMgXHVjMThjXHViYjM4XHVjNzkwIFx1YjljY1x1YzczY1x1Yjg1YyBcdWFkNmNcdWMxMzFcdWI0MWNcdWIyZTQuPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+JE4kXHVhYzFjXHVjNzU4IFx1YzkwNFx1YzVkMCZuYnNwO1x1YWM3OFx1Y2NkMCBcdWM4MTVcdWIyZjVcdWM3NDQgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LiAkaSRcdWJjODhcdWM5ZjggXHVjOTA0XHVjNWQwXHViMjk0ICRSX2kkXHViOWNjXHVjNzc0IFx1Y2Q5Y1x1YjgyNVx1YjQxOFx1YzViNFx1YzU3YyBcdWQ1NWNcdWIyZTQuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMSIsImh0bWxfdGl0bGUiOiIwIiwicHJvYmxlbV9sYW5nX3Rjb2RlIjoiS29yZWFuIn0seyJwcm9ibGVtX2lkIjoiMTkyOTkiLCJwcm9ibGVtX2xhbmciOiIxIiwidGl0bGUiOiJTdW0gb2YgU3F1YXJlcyBvZiB0aGUgT2NjdXJyZW5jZSBDb3VudHMiLCJkZXNjcmlwdGlvbiI6IjxwPkZvciB0d28gc3RyaW5ncyAkUyQgYW5kICRQJCwgbGV0IHRoZSB2YWx1ZSAkZiAoUywgUCkkIGJlIHRoZSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2YgJFAkIGluICRTJC4gRm9yIGV4YW1wbGUsICRmJCgmcXVvdDs8Y29kZT5hYmFiYTxcL2NvZGU+JnF1b3Q7LCAmcXVvdDs8Y29kZT5hYmE8XC9jb2RlPiZxdW90OykgPSAyLCBhbmQgJGYkKCZxdW90Ozxjb2RlPmFhYWFhPFwvY29kZT4mcXVvdDssICZxdW90Ozxjb2RlPmFhPFwvY29kZT4mcXVvdDspID0gNC48XC9wPlxyXG5cclxuPHA+Rm9yIGEgc3RyaW5nICRTJCwgbGV0IHRoZSB2YWx1ZSAkZyAoUykkIGJlIHRoZSBzdW0gb2Ygc3F1YXJlcyBvZiB0aGUgb2NjdXJyZW5jZSBjb3VudHMgaW4gJFMkIGZvciBhbGwgcG9zc2libGUgbm9uLWVtcHR5IHN0cmluZ3MuIE1vcmUgZm9ybWFsbHksICRnIChTKSA9IFxcc3VtIFxcYmlnKCBmIChTLCBQKV4yIFxcYmlnKSQgZm9yIGFsbCBwb3NzaWJsZSBub24tZW1wdHkgc3RyaW5ncyAkUCQuPFwvcD5cclxuXHJcbjxwPllvdSBoYXZlIGdpdmVuIGEgc3RyaW5nIG9mIGxlbmd0aCAkbiQ6ICRTID0gY18xIGNfMiBcXGxkb3RzIGNfbiQuIExldCAkcl9pID0gZyAoY18xIGNfMiBcXGxkb3RzIGNfaSkkLiBDYWxjdWxhdGUgdGhlIHZhbHVlcyAkcl9pJCBmb3IgYWxsICRpJCBmcm9tICQxJCB0byAkbiQuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5UaGUgZmlyc3QgbGluZSBjb250YWlucyB0aGUgc3RyaW5nICRTJCB3aGljaCBjb25zaXN0cyBvZiBsb3dlcmNhc2UgRW5nbGlzaCBsZXR0ZXJzLiBUaGUgbGVuZ3RoIG9mICRTJCBpcyBiZXR3ZWVuICQxJCBhbmQgJDEwXjUkIGxldHRlcnMsIGluY2x1c2l2ZS48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5QcmludCAkbiQgbGluZXMuIFRoZSAkaSQtdGggbGluZSBtdXN0IGNvbnRhaW4gdGhlIGludGVnZXIgJHJfaSQuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMCIsImh0bWxfdGl0bGUiOiIwIiwicHJvYmxlbV9sYW5nX3Rjb2RlIjoiRW5nbGlzaCJ9XQ==