A. Проверка строки
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У A есть строка, изначально состоящая из некоторого количество букв «a». Он дал свою строку другу B, который добавил некоторое количество букв «b» в конец этой строки. Так как A и B любят буквы «a» и «b», то после этих операций в строке есть хотя бы по одной букве «a» и «b».

Затем B передал эту строку C, который добавил некоторое количество букв «c» в конец строки. Так как C хороший друг A и B, количество букв «c», которые он добавил к строке, равно количеству букв «a» или количеству букв «b», имеющихся в строке. Возможно такое, что количество букв «c» одновременно равно количеству букв «a» и количеству букв «b».

Вам дана строка и вы должны определить могла ли эта строка быть получена в результате описанных выше действий. Если это возможно, выведите «YES», иначе, выведите «NO» (без кавычек).

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

В единственной строке входных данных задана строка $$$S$$$ ($$$ 1 \le |S| \le 5\,000 $$$). Гарантируется, что строка состоит только из строчных латинских букв «a», «b», «c».

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

Выведите «YES» или «NO» в соответствии с условием.

Примеры
Входные данные
aaabccc
Выходные данные
YES
Входные данные
bbacc
Выходные данные
NO
Входные данные
aabc
Выходные данные
YES
Примечание

Рассмотрим первый пример: количество букв «c» равно количеству букв «a».

Рассмотрим второй пример: несмотря на то, что количество букв «c» равно количеству букв «b», порядок букв неправильный.

Рассмотрим третий пример: количество букв «c» равно количеству букв «b».