Олимпиадный тренинг

Задача . D. Нестандартная обработка языка


Лура скучала и решила создать простой язык, используя пять букв \(\texttt{a}\), \(\texttt{b}\), \(\texttt{c}\), \(\texttt{d}\), \(\texttt{e}\). Существуют два типа букв:

  • гласные — буквы \(\texttt{a}\) и \(\texttt{e}\). Они обозначаются как \(\textsf{V}\).
  • согласные — буквы \(\texttt{b}\), \(\texttt{c}\), \(\texttt{d}\). Они обозначаются как \(\textsf{C}\).
В языке существуют два типа слогов: \(\textsf{CV}\) (согласная, за которой следует гласная) или \(\textsf{CVC}\) (гласная с согласной до и после). Например, \(\texttt{ba}\), \(\texttt{ced}\), \(\texttt{bab}\) являются слогами, но \(\texttt{aa}\), \(\texttt{eda}\), \(\texttt{baba}\) — нет.

Слово в языке — это последовательность слогов. Лура написала слово на этом языке, но не знает, как разбить его на слоги. Помогите ей разбить слово на слоги.

Например, для слова \(\texttt{bacedbab}\) оно будет разбито на слоги как \(\texttt{ba.ced.bab}\) (точка \(\texttt{.}\) обозначает границу слога).

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

Ввод состоит из нескольких наборов входных данных. Первая строка содержит целое число \(t\) (\(1 \leq t \leq 100\)) — количество наборов входных данных. Затем следуют описания наборов.

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

Вторая строка каждого набора содержит строку, состоящую из \(n\) строчных латинских символов — слово.

Все предоставленные слова являются допустимыми словами в языке; то есть, они используют только буквы \(\texttt{a}\), \(\texttt{b}\), \(\texttt{c}\), \(\texttt{d}\), \(\texttt{e}\), и каждое слово состоит из нескольких слогов.

Сумма \(n\) по всем тестам не превышает \(2 \cdot 10^5\).

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

Для каждого набора входных данных выведите строку, обозначающую слово, разбитое на слоги, вставив точку \(\texttt{.}\) между каждой парой смежных слогов.

Если существует несколько возможных разбиений, выведите любое из них. Ввод предоставлен таким образом, что по крайней мере одно возможное разбиение существует.


Примеры
Входные данныеВыходные данные
1 6
8
bacedbab
4
baba
13
daddecabeddad
3
dac
6
dacdac
22
dababbabababbabbababba
ba.ced.bab
ba.ba
dad.de.ca.bed.dad
dac
dac.dac
da.bab.ba.ba.bab.bab.ba.bab.ba

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя