





# Imports
import numpy as np





class lowerCamelCase						:







  def __init__(		self     ,     lowercase__=None     ,     lowercase__=None     ,     lowercase__=None     ,     lowercase__=None     ,     lowercase__=None		)		->						List[Any]:






        """simple docstring"""





        self.set_matricies(red=__snake_case     ,     green=__snake_case     ,     blue=__snake_case     ,     red_edge=__snake_case     ,     nir=__snake_case		)







  def 				UpperCAmelCase_				(		self     ,     lowercase__=None     ,     lowercase__=None     ,     lowercase__=None     ,     lowercase__=None     ,     lowercase__=None		)		->						str:






        """simple docstring"""





        if red is not None:
              _snake_case		:	Union[str, Any]					     =     red
        if green is not None:
              _snake_case		:	Tuple					     =     green
        if blue is not None:
              _snake_case		:	Optional[Any]					     =     blue
        if red_edge is not None:
              _snake_case		:	Any					     =     red_edge
        if nir is not None:
              _snake_case		:	List[Any]					     =     nir
        return True







  def 				UpperCAmelCase_				(		self     ,     lowercase__=""     ,     lowercase__=None     ,     lowercase__=None     ,     lowercase__=None     ,     lowercase__=None     ,     lowercase__=None		)		->						Any:






        """simple docstring"""





        self.set_matricies(red=__snake_case     ,     green=__snake_case     ,     blue=__snake_case     ,     red_edge=__snake_case     ,     nir=__snake_case		)
        _snake_case		:	List[Any]					     =     {
            '''ARVI2''': self.arvaa,
            '''CCCI''': self.ccci,
            '''CVI''': self.cvi,
            '''GLI''': self.gli,
            '''NDVI''': self.ndvi,
            '''BNDVI''': self.bndvi,
            '''redEdgeNDVI''': self.red_edge_ndvi,
            '''GNDVI''': self.gndvi,
            '''GBNDVI''': self.gbndvi,
            '''GRNDVI''': self.grndvi,
            '''RBNDVI''': self.rbndvi,
            '''PNDVI''': self.pndvi,
            '''ATSAVI''': self.atsavi,
            '''BWDRVI''': self.bwdrvi,
            '''CIgreen''': self.ci_green,
            '''CIrededge''': self.ci_rededge,
            '''CI''': self.ci,
            '''CTVI''': self.ctvi,
            '''GDVI''': self.gdvi,
            '''EVI''': self.evi,
            '''GEMI''': self.gemi,
            '''GOSAVI''': self.gosavi,
            '''GSAVI''': self.gsavi,
            '''Hue''': self.hue,
            '''IVI''': self.ivi,
            '''IPVI''': self.ipvi,
            '''I''': self.i,
            '''RVI''': self.rvi,
            '''MRVI''': self.mrvi,
            '''MSAVI''': self.m_savi,
            '''NormG''': self.norm_g,
            '''NormNIR''': self.norm_nir,
            '''NormR''': self.norm_r,
            '''NGRDI''': self.ngrdi,
            '''RI''': self.ri,
            '''S''': self.s,
            '''IF''': self._if,
            '''DVI''': self.dvi,
            '''TVI''': self.tvi,
            '''NDRE''': self.ndre,
        }

        try:
              return funcs[index]()
        except KeyError:
              print('''Index not in the list!'''		)
              return False







  def 				UpperCAmelCase_				(		self		)		->						Union[str, Any]:






        """simple docstring"""





        return -0.18 + (1.17 * ((self.nir - self.red) / (self.nir + self.red)))







  def 				UpperCAmelCase_				(		self		)		->						Tuple:






        """simple docstring"""





        return ((self.nir - self.redEdge) / (self.nir + self.redEdge)) / (
            (self.nir - self.red) / (self.nir + self.red)
        )







  def 				UpperCAmelCase_				(		self		)		->						int:






        """simple docstring"""





        return self.nir * (self.red / (self.green**2))







  def 				UpperCAmelCase_				(		self		)		->						Union[str, Any]:






        """simple docstring"""





        return (2 * self.green - self.red - self.blue) / (
            2 * self.green + self.red + self.blue
        )







  def 				UpperCAmelCase_				(		self		)		->						int:






        """simple docstring"""





        return (self.nir - self.red) / (self.nir + self.red)







  def 				UpperCAmelCase_				(		self		)		->						Optional[Any]:






        """simple docstring"""





        return (self.nir - self.blue) / (self.nir + self.blue)







  def 				UpperCAmelCase_				(		self		)		->						List[Any]:






        """simple docstring"""





        return (self.redEdge - self.red) / (self.redEdge + self.red)







  def 				UpperCAmelCase_				(		self		)		->						List[str]:






        """simple docstring"""





        return (self.nir - self.green) / (self.nir + self.green)







  def 				UpperCAmelCase_				(		self		)		->						Optional[Any]:






        """simple docstring"""





        return (self.nir - (self.green + self.blue)) / (
            self.nir + (self.green + self.blue)
        )







  def 				UpperCAmelCase_				(		self		)		->						Dict:






        """simple docstring"""





        return (self.nir - (self.green + self.red)) / (
            self.nir + (self.green + self.red)
        )







  def 				UpperCAmelCase_				(		self		)		->						Optional[Any]:






        """simple docstring"""





        return (self.nir - (self.blue + self.red)) / (self.nir + (self.blue + self.red))







  def 				UpperCAmelCase_				(		self		)		->						int:






        """simple docstring"""





        return (self.nir - (self.green + self.red + self.blue)) / (
            self.nir + (self.green + self.red + self.blue)
        )







  def 				UpperCAmelCase_				(		self     ,     lowercase__=0.08     ,     lowercase__=1.22     ,     lowercase__=0.03		)		->						str:






        """simple docstring"""





        return a * (
            (self.nir - a * self.red - b)
            / (a * self.nir + self.red - a * b + x * (1 + a**2))
        )







  def 				UpperCAmelCase_				(		self		)		->						str:






        """simple docstring"""





        return (0.1 * self.nir - self.blue) / (0.1 * self.nir + self.blue)







  def 				UpperCAmelCase_				(		self		)		->						Union[str, Any]:






        """simple docstring"""





        return (self.nir / self.green) - 1







  def 				UpperCAmelCase_				(		self		)		->						List[str]:






        """simple docstring"""





        return (self.nir / self.redEdge) - 1







  def 				UpperCAmelCase_				(		self		)		->						Any:






        """simple docstring"""





        return (self.red - self.blue) / self.red







  def 				UpperCAmelCase_				(		self		)		->						Optional[Any]:






        """simple docstring"""





        _snake_case		:	int					     =     self.ndvi()
        return ((ndvi + 0.5) / (abs(ndvi + 0.5		))) * (abs(ndvi + 0.5		) ** (1 / 2))







  def 				UpperCAmelCase_				(		self		)		->						Optional[Any]:






        """simple docstring"""





        return self.nir - self.green







  def 				UpperCAmelCase_				(		self		)		->						int:






        """simple docstring"""





        return 2.5 * (
            (self.nir - self.red) / (self.nir + 6 * self.red - 7.5 * self.blue + 1)
        )







  def 				UpperCAmelCase_				(		self		)		->						Tuple:






        """simple docstring"""





        _snake_case		:	Dict					     =     (2 * (self.nir**2 - self.red**2) + 1.5 * self.nir + 0.5 * self.red) / (
            self.nir + self.red + 0.5
        )
        return n * (1 - 0.25 * n) - (self.red - 0.125) / (1 - self.red)







  def 				UpperCAmelCase_				(		self     ,     lowercase__=0.16		)		->						Any:






        """simple docstring"""





        return (self.nir - self.green) / (self.nir + self.green + y)







  def 				UpperCAmelCase_				(		self     ,     lowercase__=0.5		)		->						Optional[int]:






        """simple docstring"""





        return ((self.nir - self.green) / (self.nir + self.green + n)) * (1 + n)







  def 				UpperCAmelCase_				(		self		)		->						Optional[Any]:






        """simple docstring"""





        return np.arctan(
            ((2 * self.red - self.green - self.blue) / 30.5) * (self.green - self.blue)		)







  def 				UpperCAmelCase_				(		self     ,     lowercase__=None     ,     lowercase__=None		)		->						List[str]:






        """simple docstring"""





        return (self.nir - b) / (a * self.red)







  def 				UpperCAmelCase_				(		self		)		->						Optional[Any]:






        """simple docstring"""





        return (self.nir / ((self.nir + self.red) / 2)) * (self.ndvi() + 1)







  def 				UpperCAmelCase_				(		self		)		->						Tuple:






        """simple docstring"""





        return (self.red + self.green + self.blue) / 30.5







  def 				UpperCAmelCase_				(		self		)		->						List[str]:






        """simple docstring"""





        return self.nir / self.red







  def 				UpperCAmelCase_				(		self		)		->						int:






        """simple docstring"""





        return (self.rvi() - 1) / (self.rvi() + 1)







  def 				UpperCAmelCase_				(		self		)		->						Dict:






        """simple docstring"""





        return (
            (2 * self.nir + 1)
            - ((2 * self.nir + 1) ** 2 - 8 * (self.nir - self.red)) ** (1 / 2)
        ) / 2







  def 				UpperCAmelCase_				(		self		)		->						Union[str, Any]:






        """simple docstring"""





        return self.green / (self.nir + self.red + self.green)







  def 				UpperCAmelCase_				(		self		)		->						Dict:






        """simple docstring"""





        return self.nir / (self.nir + self.red + self.green)







  def 				UpperCAmelCase_				(		self		)		->						Optional[int]:






        """simple docstring"""





        return self.red / (self.nir + self.red + self.green)







  def 				UpperCAmelCase_				(		self		)		->						str:






        """simple docstring"""





        return (self.green - self.red) / (self.green + self.red)







  def 				UpperCAmelCase_				(		self		)		->						str:






        """simple docstring"""





        return (self.red - self.green) / (self.red + self.green)







  def 				UpperCAmelCase_				(		self		)		->						Optional[int]:






        """simple docstring"""





        _snake_case		:	Optional[Any]					     =     np.max([np.max(self.red		), np.max(self.green		), np.max(self.blue		)]		)
        _snake_case		:	Dict					     =     np.min([np.min(self.red		), np.min(self.green		), np.min(self.blue		)]		)
        return (max_value - min_value) / max_value







  def 				UpperCAmelCase_				(		self		)		->						int:






        """simple docstring"""





        return (2 * self.red - self.green - self.blue) / (self.green - self.blue)







  def 				UpperCAmelCase_				(		self		)		->						Tuple:






        """simple docstring"""





        return self.nir / self.red







  def 				UpperCAmelCase_				(		self		)		->						List[str]:






        """simple docstring"""





        return (self.ndvi() + 0.5) ** (1 / 2)







  def 				UpperCAmelCase_				(		self		)		->						List[Any]:






        """simple docstring"""





        return (self.nir - self.redEdge) / (self.nir + self.redEdge)









'''simple docstring'''

from collections.abc import Generator




def    _a    (							):





      """simple docstring"""



      _snake_case     ,							_snake_case		:	Union[str, Any]					     =     0, 1
      while True:
            _snake_case     ,							_snake_case		:	List[str]					     =     b, a + b
            yield b




def    _a    (							lowerCAmelCase_ = 1_000	):





      """simple docstring"""



      _snake_case		:	List[str]					     =     1
      _snake_case		:	Dict					     =     fibonacci_generator()
      while len(str(next(lowerCAmelCase_	)	)	) < n:
            answer += 1
      return answer + 1


if __name__ == "__main__":
   print(solution(int(str(input()).strip())))


