Module: Programación dinámica. Lo esencial


Problem

3 /5


jugamos guijarros

Problem

Érase una vez en la infancia, todos disfrutábamos jugando el juego "Pebbles" o "Cinco guijarros", como alguien lo llamó. Para el juego, se necesitaban guijarros ordinarios, que se podían encontrar fácilmente en la calle. Era posible jugar en cualquier lugar; El primer paso del juego fue el siguiente. Los cinco guijarros se tiran al suelo frente a ellos. Uno de ellos fue elegido. Esta es una bola blanca. Este guijarro se lanza al aire y mientras vuela, es necesario recoger uno de los guijarros que quedan en el suelo y tener tiempo para atrapar el que vuela con la misma mano. El guijarro recogido se aparta y la acción se repite para todos los guijarros restantes.
En los siguientes pasos, aumenta el número de guijarros para recoger. El último paso fue el examen, cuando era necesario lanzar todos los guijarros recogidos al aire y atraparlos con el dorso de la mano, y luego lanzarlos nuevamente y atraparlos con la palma abierta. Cuántos guijarros quedaron al final, tantos puntos obtienes. El turno pasa al siguiente jugador, que también repite todos los pasos. Luego se lanzó una nueva ronda del juego. El ganador fue el que anotó la mayor cantidad de puntos en todas las rondas.
Muchos muchachos dificultaron el juego de muchas maneras.
Digamos que los muchachos tienen un número infinito de guijarros tirados en el suelo. Al final de la ronda, no necesitan atrapar todos los guijarros en sus palmas, sino exactamente lo suficiente para que su número total de puntos aumente en 1 o se duplique o triplique. Antes del comienzo del juego, todos ya tienen 1 punto. El ganador será el que obtenga N puntos más rápido.
Supongamos que todos los jugadores tienen suficiente experiencia de juego y siempre llegan al examen con la cantidad de piedras que necesitan (para que puedan aumentar la cantidad requerida de puntos en 1, el doble o el triple).

Determine el número mínimo de rondas que necesita jugar para obtener el número dado de puntos N de .

Entrada

El programa recibe un solo número como entrada, que no exceda 106.


Salida

Debe imprimir un número: el menor número de operaciones que está buscando.

 

 

Ejemplos

 

# Entrada Salida
1 1 0
2 5 3
3 32718 17