



from itertools import product

from cva import COLOR_BGR2GRAY, cvtColor, imread, imshow, waitKey
from numpy import dot, exp, mgrid, pi, ravel, square, uinta, zeros
def 						UpperCamelCase      (  snake_case__			:       Optional[int]			,	snake_case__			:       Optional[Any]      )      ->	Dict:
   UpperCamelCase       :    Optional[Any]		      =      k_size // 2
   UpperCamelCase      ,	UpperCamelCase       :    List[str]		      =      mgrid[0 - center : k_size - center, 0 - center : k_size - center]
   UpperCamelCase       :    str		      =      1 / (2 * pi * sigma) * exp(-(square(snake_case__      ) + square(snake_case__      )) / (2 * square(snake_case__      ))      )
   return g
def 						UpperCamelCase      (  snake_case__			:       str			,	snake_case__			:       Optional[Any]			,	snake_case__			:       Optional[int]      )      ->	Optional[Any]:
   UpperCamelCase      ,	UpperCamelCase       :    List[str]		      =      image.shape[0], image.shape[1]
   # dst image height and width
   UpperCamelCase       :    Optional[Any]		      =      height - k_size + 1
   UpperCamelCase       :    Dict		      =      width - k_size + 1

   # im2col, turn the k_size*k_size pixels into a row and np.vstack all rows
   UpperCamelCase       :    List[str]		      =      zeros((dst_height * dst_width, k_size * k_size)      )
   UpperCamelCase       :    Dict		      =      0
   for i, j in product(range(snake_case__      )			,	range(snake_case__      )      ):
      UpperCamelCase       :    Tuple		      =      ravel(image[i : i + k_size, j : j + k_size]      )
      UpperCamelCase       :    List[str]		      =      window
      row += 1

   #  turn the kernel into shape(k*k, 1)
   UpperCamelCase       :    Optional[int]		      =      gen_gaussian_kernel(snake_case__			,	snake_case__      )
   UpperCamelCase       :    Optional[int]		      =      ravel(snake_case__      )

   # reshape and get the dst image
   UpperCamelCase       :    Dict		      =      dot(snake_case__			,	snake_case__      ).reshape(snake_case__			,	snake_case__      ).astype(snake_case__      )

   return dst


if __name__ == "__main__":
    # read original image
    __UpperCAmelCase			  =			imread(r'''../image_data/lena.jpg''')
    # turn image in gray scale value
    __UpperCAmelCase			  =			cvtColor(img, COLOR_BGR2GRAY)

    # get values with two different mask size
    __UpperCAmelCase			  =			gaussian_filter(gray, 3, sigma=1)
    __UpperCAmelCase			  =			gaussian_filter(gray, 5, sigma=0.8)

    # show result images
    imshow('''gaussian filter with 3x3 mask''', gaussianaxa)
    imshow('''gaussian filter with 5x5 mask''', gaussianaxa)
    waitKey()





"""simple docstring"""



def 			_UpperCamelCase						(    _A = 1_0_0_0   )     ->	int:





    """simple docstring"""

    _UpperCAmelCase     ,_UpperCAmelCase        = 1, 1
    _UpperCAmelCase        = 2
    while True:
        _UpperCAmelCase        = 0
        _UpperCAmelCase        = fa + fa
        _UpperCAmelCase     ,_UpperCAmelCase        = fa, f
        index += 1
        for _ in str(_A   ):
            i += 1
        if i == n:
            break
    return index


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