"""simple docstring"""


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       (      lowercase ,lowercase		):







  """simple docstring"""
  _UpperCAmelCase    			=   k_size // 2
  _UpperCAmelCase			,					_UpperCAmelCase    			=   mgrid[0 - center : k_size - center, 0 - center : k_size - center]
  _UpperCAmelCase    			=   1 / (2 * pi * sigma) * exp(-(square(lowercase		) + square(lowercase		)) / (2 * square(lowercase		))		)
  return g






def      __UpperCAmelCase       (      lowercase ,lowercase ,lowercase		):







  """simple docstring"""
  _UpperCAmelCase			,					_UpperCAmelCase    			=   image.shape[0], image.shape[1]
  # dst image height and width
  _UpperCAmelCase    			=   height - k_size + 1
  _UpperCAmelCase    			=   width - k_size + 1

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

  #  turn the kernel into shape(k*k, 1)
  _UpperCAmelCase    			=   gen_gaussian_kernel(lowercase ,lowercase		)
  _UpperCAmelCase    			=   ravel(lowercase		)

  # reshape and get the dst image
  _UpperCAmelCase    			=   dot(lowercase ,lowercase		).reshape(lowercase ,lowercase		).astype(lowercase		)

  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"""


from collections.abc import Generator






def      __UpperCAmelCase       (      ):







  """simple docstring"""
  _UpperCAmelCase			,					_UpperCAmelCase    			=   0, 1
  while True:
    _UpperCAmelCase			,					_UpperCAmelCase    			=   b, a + b
    yield b






def      __UpperCAmelCase       (      lowercase = 10_00		):







  """simple docstring"""
  _UpperCAmelCase    			=   1
  _UpperCAmelCase    			=   fibonacci_generator()
  while len(str(next(lowercase		)		)		) < n:
    answer += 1
  return answer + 1


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