Module: Operações de bits (C++)


Problem

13 /13


Professor de matemática Yuri Petrovich

Problem

O lendário professor de matemática Yuri Petrovich criou um jogo engraçado com números. Ou seja, pegando um número inteiro arbitrário, ele o traduz em um sistema numérico binário, obtendo uma sequência de zeros e uns, começando com um. (Por exemplo, número decimal\(19_{10} = 1\cdot2^4+0\cdot2^3+0\cdot2^2+1\cdot2^1+1\cdot2^0 \ )  no sistema binário será escrito como 10011 2.) Em seguida, o professor começa a deslocar os dígitos do número binário resultante em um ciclo (de modo que o último dígito se torne o primeiro e todos os outros sejam deslocados uma posição para a direita), escrevendo as sequências resultantes de zeros e uns na coluna — ele notou que independentemente da escolha do número inicial, as sequências resultantes começam a se repetir a partir de um determinado momento. E, finalmente, Yuri Petrovich encontra o máximo dos números escritos e o traduz de volta para o sistema de numeração decimal, considerando esse número o resultado das manipulações feitas. Assim, para o número 19, a lista de sequências seria:
10011
11001
11100
01110
00111
10011

e o resultado do jogo será, portanto, um número \(1\cdot2^4+1\cdot2^3+1\cdot2^2+0\cdot2^1+0\cdot2^0 = 28_{ 10} \)

Como o jogo inventado com números exige cada vez mais da imaginação do professor, distraindo-o do trabalho com alunos muito talentosos, você é solicitado a escrever um programa que ajude Yuri Petrovich a obter o resultado do jogo sem cálculos manuais tediosos.
 
Entrada:
O arquivo de entrada contém um único número inteiro N (0<=N<=32767).
Saída: 
Seu programa deve imprimir no arquivo de saída um único inteiro igual ao resultado do jogo.

Exemplos
# Entrada Saída
1 1 1