<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> </ol>