Today in programming class, student Levodt learned about bit operations, specifically the "XOR" operation. This operation exists in all modern programming languages. For instance, in the languages $$$C\!+\!+$$$, $$$Python$$$, and $$$Java$$$, it is designated as "$$$ ^\wedge $$$", while in $$$Pascal$$$, it is designated as "xor". An example of the "xor" operation is: $$$10101_2 \oplus 10001_2 = 00100_2$$$. Note that "XOR" is similar to adding the corresponding bits of numbers modulo 2.
Levodt is given the following homework assignment: find any two numbers whose "XOR" equals a given non-negative number $$$N$$$.
He asks you to help in writing a program that can determine whether there are two natural numbers (not necessarily different), whose "XOR" equals the given $$$N$$$.
A single line contains the number $$$N$$$ $$$(0 \le N \le 10^{18})$$$.
If no two natural numbers exist whose XOR equals to the specified number $$$N$$$, print "NO" (without quotes) on a single line. Otherwise, on the first line, print "YES" (without quotes), on the second line, print two numbers separated by a space, the xor of which is equal to $$$N$$$. The numbers in the output must not exceed $$$10^{18}$$$.
If there are multiple solutions, print any of them.
15
YES 12 3
6
YES 4 2