아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

가장 긴 Lyndon 접두사

시간 제한1초메모리 제한256 MB

요약
소문자 문자열의 각 접미사에 대해 Lyndon 단어가 되는 가장 긴 접두사의 길이를 구합니다.
난이도

어려움10점 중 8점

유형
문자열, 문자열 매칭, 스택
정답자
아직 제출이 없습니다

문제

단어 ww가 자신의 모든 진접미사보다 사전순으로 엄격히 작으면, ww를 Lyndon 단어라고 한다. 예를 들어 aab는 Lyndon 단어이고, aa는 Lyndon 단어가 아니다.

치아키에게 길이 nn의 문자열 s1s2…sns_1s_2\dots s_n이 있다. 치아키는 각 ii에 대해 sisi+1…sns_i s_{i+1} \dots s_n의 접두사 중 Lyndon 단어인 가장 긴 접두사의 길이 lil_i를 알고 싶어 한다.

입력

여러 개의 테스트 케이스가 주어진다. 첫째 줄에 테스트 케이스의 수 TT (1≤T≤1051 \le T \le 10^5)가 주어진다. 각 테스트 케이스는 다음과 같다.

첫째 줄에 정수 nn (1≤n≤1051 \leq n \leq 10^5)이 주어진다. 둘째 줄에 소문자로만 이루어진 길이 nn의 문자열 s1s2…sns_1 s_2 \dots s_n이 주어진다.

모든 nn의 합은 10510^5을 넘지 않는다.

출력

각 테스트 케이스마다 nn개의 정수 l1,l2,…,lnl_1, l_2, \dots, l_n을 출력한다.

예제1

  1. 예제 1

    입력
    3
    3
    aaa
    3
    aab
    3
    cba
    
    예상 출력
    1 1 1
    3 2 1
    1 1 1