Пользователь ainta любит играть с карточками. У него есть a карточек с буквой «o» и b карточек с буквой «x». Играя, ainta выкладывает все карточки в ряд и затем считает, сколько очков он получит по следующей формуле:
- Изначально счет равняется 0.
- Для каждого блока последовательных букв «o» длины x счет увеличивается на x2.
- Для каждого блока последовательных букв «x» длины y счет уменьшается на y2.
Например, если a = 6, b = 3, а ainta расположил карточки в порядке, описанном строкой «ooxoooxxo», то счет равняется 22 - 12 + 32 - 22 + 12 = 9. Это потому что в ряду из карточек всего 5 блоков: «oo», «x», «ooo», «xx», «o».
Пользователь ainta любит большие числа, поэтому он хочет максимизировать счет, расположив карточки некоторым образом. Помогите ainta добиться максимально возможного счета. Обратите внимание, что он обязан выложить в ряд все свои карточки.
Выходные данные
В первой строке выведите единственное целое число v — наибольший счет, которого может добиться ainta.
Во второй строке выведите a + b символов, описывающих оптимальный ряд карточек. Если k-ая карта в ряду содержит символ «o», то k-ый символ должен равняться «o». Если k-тая карта в ряду содержит «x», то k-ый символ должен равняться «x». Количество символов «o» должно равняться a, а количество символов «x» должно равняться b. Если есть несколько способов максимизировать v, выведите любой из них.
Пожалуйста, не используйте спецификатор %lld для чтения или записи 64-битных целых чисел на С++. Рекомендуется использовать потоки cin, cout или спецификатор %I64d.