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

Сегодня на паре по программированию студент Леводт узнал о битовых операциях, в частности, об операции «XOR». Данная операция существует во всех современных языках программирования, например, в языках $$$C\!+\!+$$$, $$$Python$$$ и $$$Java$$$ она обозначена как «$$$ ^\wedge $$$», в $$$Pascal$$$ – как «xor». Пример применения операции «xor»: $$$10101_2 \oplus 10001_2 = 00100_2$$$. Можно заметить, что «xor» аналогичен сложению соответствующих битов чисел по модулю 2.

На дом Леводту была дана следующая задача: найти два любых числа, «XOR» которых равен заданному неотрицательному числу $$$N$$$. Он просит вас помочь ему – написать программу, которая сможет определить, найдутся ли два натуральных числа (необязательно различных), «XOR» которых будет равен заданному $$$N$$$.

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

В единственной строке содержится число $$$N$$$ $$$(0 \le N \le 10^{18})$$$.

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

Если не существует двух натуральных чисел, XOR которых равен заданному числу $$$N$$$, в единственной строке выведите «NO» (без кавычек). В противном случае в первой строке выведите «YES» (без кавычек), во второй строке выведите через пробел два числа, xor которых равен $$$N$$$. Числа в ответе не должны превышать $$$10^{18}$$$.

Если ответов несколько, разрешается вывести любой.

Примеры
Входные данные
15
Выходные данные
YES
12 3
Входные данные
6
Выходные данные
YES
4 2