Module: Programmazione dinamica. Nozioni di base


Problem

3 /5


Giochiamo a sassolini

Problem

C'era una volta durante l'infanzia, ci divertivamo tutti a giocare al gioco "Pebbles" o "Cinque sassolini", come qualcuno lo chiamava. Per il gioco servivano sassolini comuni, che si potevano facilmente trovare per strada. Era possibile suonare ovunque; La prima fase del gioco è stata la seguente. Tutti e cinque i ciottoli vengono gettati a terra davanti a loro. Uno di loro è stato scelto. Questo è un pallino. Questo sasso viene lanciato in aria e mentre vola bisogna raccogliere uno dei sassolini rimasti a terra e avere il tempo di afferrare quello volante con la stessa mano. Il sassolino raccolto viene messo da parte e l'azione viene ripetuta per tutti i sassolini rimasti.
Nei passaggi successivi, il numero di sassolini da raccogliere aumenta. L'ultimo passaggio era l'esame, quando era necessario lanciare in aria tutti i sassolini raccolti e prenderli con il dorso della mano, quindi lanciarli di nuovo e riprenderli con il palmo aperto. Quanti sassolini alla fine sono rimasti, tanti punti ottieni. Il turno passa al giocatore successivo, che ripete anche tutti i passaggi. Quindi è stato lanciato un nuovo round del gioco. Il vincitore è stato colui che ha ottenuto il maggior numero di punti per tutti i round.
Un sacco di ragazzi hanno reso il gioco difficile in tutti i modi.
Diciamo che i ragazzi hanno un numero infinito di ciottoli a terra. Alla fine del round, non hanno bisogno di prendere tutti i sassolini nei loro palmi, ma esattamente quanto basta affinché il loro numero totale di punti aumenti di 1 o raddoppi o tripli. Prima dell'inizio del gioco, tutti hanno già 1 punto. Il vincitore sarà colui che ottiene N punti più velocemente.
Supponiamo che tutti i giocatori abbiano sufficiente esperienza di gioco e raggiungano sempre l'esame con il numero di pietre di cui hanno bisogno (in modo che possano aumentare il numero di punti richiesto di 1, doppio o triplo).

Determina il numero minimo di round che devi giocare per ottenere il dato numero di punti N da .

Input

Il programma riceve un singolo numero come input, non superiore a 106.


Uscita

Devi stampare un numero: il minor numero di operazioni che stai cercando.

 

 

Esempi
# Input Uscita
1 1 0
2 5 3
3 32718 17