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

Задача . D. Сбалансированная троичная строка


Задана строка \(s\), состоящая ровно из \(n\) символов '0', '1' и '2'. Такие строки называются троичными.

Ваша задача — заменить минимальное количество символов в строке другими символами, чтобы получилась сбалансированная троичная строка (сбалансированная троичная строка — это троичная строка, в которой количество символов '0' равно количеству символов '1' и количество символов '1' (и, очевидно, '0') равно количеству символов '2'.

Среди всех сбалансированных троичных строк вам необходимо получить лексикографически (алфавитно) минимальную.

Заметьте, что вы не можете удалять символы из строки и добавлять символы в строку. Также заметьте, что вы можете заменять заданные символы только на символы '0', '1' и '2'.

Гарантируется, что ответ существует.

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

Первая строка входных данных содержит одно целое число \(n\) (\(3 \le n \le 3 \cdot 10^5\), \(n\) делится на \(3\)) — количество символов в \(s\).

Вторая строка входных данных содержит строку \(s\), состоящую ровно из \(n\) символов '0', '1' и '2'.

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

Выведите одну строку — лексикографически (алфавитно) минимальную сбалансированную троичную строку, полученную из заданной при помощи минимального количества замен.

Так как \(n\) делится на \(3\), то очевидно, что ответ существует. Также очевидно, что существует только один возможный ответ.


Примеры
Входные данныеВыходные данные
1 3
121
021
2 6
000000
001122
3 6
211200
211200
4 6
120110
120120

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

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