Problem D
Necklace Decomposition


The set of cyclic rotations of a string are the strings obtained by embedding the string clockwise on a ring, with the first character following on the last, starting at any character position and moving clockwise on the ring until the character preceeding the starting character is reached. A string is a necklace if it is the lexicographically smallest among all its cyclic rotations. For instance, for the string $01011$ the cyclic rotations are $(10110,01101,11010,10101,01011)$, and furthermore $01011$ is the smallest string and hence, a necklace.

Any string $S$ can be written in a unique way as a concatenation $S=T_1 T_2 \dots T_ k$ of necklaces $T_ i$ such that $T_{i+1} < T_ i$ for all $i=1, \dots , k-1$, and $T_ i T_{i+1}$ is not a necklace for any $i=1, \dots , k-1$. This representation is called the necklace decomposition of the string $S$, and your task is to find it.

The relation $<$ on two strings is the lexicographical order and has the usual interpretation: $A<B$ if $A$ is a proper prefix of $B$ or if $A$ is equal to $B$ in the first $j-1$ positions but smaller in the $j$th position for some $j$. For instance, $001 < 0010$ and $1101011 < 1101100$.


On the first line of the input is a single positive integer $n$, telling the number of test scenarios to follow. There will be at most 250 test scenarios. Each scenario consists of one line containing a non-empty string of zeros and ones of length at most $100$.


For each scenario, output one line containing the necklace decomposition of the string. The necklaces should be written as ‘(’ necklace ‘)’.

Sample Input 1 Sample Output 1

Please log in to submit a solution to this problem

Log in