C. Diluc и Kaeya
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Магнат винодельческой империи в Мондштадте, непревзойденный во всех отношениях. Мыслитель из рыцарей Фавониуса с экзотической внешностью}.

На этот раз братья имеют дело со странным куском дерева, помеченного их именами. Этот кусок дерева можно представить в виде строки из $$$n$$$ символов. Каждый символ — это либо 'D', либо 'K'. Вы хотите сделать некоторое количество разрезов (возможно, $$$0$$$) в этой строке, разделив ее на несколько последовательных частей, каждая из которых имеет длину не менее $$$1$$$. Оба брата ведут себя достойно, поэтому они хотят разделить дерево как можно более равномерно. Они хотят знать, на какое максимальное число кусков можно разделить дерево, чтобы отношение числа символов 'D' и числа символов 'K' в каждом куске было одинаковым.

Kaeya, любознательный мыслитель, хотел бы знать решение сразу для нескольких сценариев. Он хочет узнать ответ для каждого префикса данной строки. Помогите ему решить эту задачу!

Для строки мы определяем отношение как $$$a:b$$$, где 'D' встречается в ней $$$a$$$ раз, а 'K' встречается $$$b$$$ раз. Обратите внимание, что $$$a$$$ или $$$b$$$ могут быть равны $$$0$$$, но не оба. Отношения $$$a:b$$$ и $$$c:d$$$ считаются равными тогда и только тогда, когда $$$a\cdot d = b\cdot c$$$.

Например, для строки 'DDD' отношение будет $$$3:0$$$, для 'DKD' — $$$2:1$$$, для 'DKK' — $$$1:2$$$, а для 'KKKKDD' — $$$2:4$$$. Обратите внимание, что отношения двух последних строк равны между собой, но не равны отношениям первых двух строк.

Входные данные

Каждый тест содержит несколько наборов входных данных. Первая строка содержит количество наборов входных данных $$$t$$$ ($$$1 \le t \le 1000$$$). Далее следует описание наборов входных данных.

Первая строка каждого набора входных данных содержит целое число $$$n$$$ ($$$1 \leq n \leq 5 \cdot 10^5$$$) — длина дерева.

Вторая строка каждого набора входных данных содержит строку $$$s$$$ длиной $$$n$$$. Каждый символ $$$s$$$ будет либо 'D', либо 'K'.

Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превышает $$$5 \cdot 10^5$$$.

Выходные данные

Для каждого набора входных данных выведите $$$n$$$ целых чисел через пробел. $$$i$$$-е из этих чисел должно быть равно ответу для префикса $$$s_{1},s_{2},\dots,s_{i}$$$.

Пример
Входные данные
5
3
DDK
6
DDDDDD
4
DKDK
1
D
9
DKDKDDDDK
Выходные данные
1 2 1 
1 2 3 4 5 6 
1 1 1 2 
1 
1 1 1 2 1 2 1 1 3 
Примечание

Для первого набора входных данных нет способа разбить 'D' или 'DDK' на более чем один блок с равным отношением количеств 'D' и 'K', в то время как 'DD' можно разбить на 'D' и 'D'.

Для второго набора входных данных, каждый префикс длины $$$i$$$ вы можете разделить на $$$i$$$ блоков 'D'.