<p>Given a positive integer, print the next smallest and the next largest number that have the same number of 1 bits in their binary representation.</p>
<p><strong>Example1:</strong></p>
<pre>
<strong> Input</strong>: num = 2 (0b10)
<strong> Output</strong>: [4, 1] ([0b100, 0b1])
</pre>
<p><strong>Example2:</strong></p>
<pre>
<strong> Input</strong>: num = 1
<strong> Output</strong>: [2, -1]
</pre>
<p><strong>Note:</strong></p>
<ol>
<li><code>1 <= num <= 2147483647</code></li>
<li>If there is no next smallest or next largest number, output -1.</li>