


"""simple docstring"""






import unittest

import numpy as np
def       A_   (   _lowerCAmelCase     :					np.ndarray,     _lowerCAmelCase     :					np.ndarray,     _lowerCAmelCase     :					np.ndarray,     _lowerCAmelCase     :					np.ndarray | None = None,     ):






     """simple docstring"""

     _a    	=				np.shape(_lowerCAmelCase       )
     _a    	=				np.shape(_lowerCAmelCase       )
     _a    	=				np.shape(_lowerCAmelCase       )

     if shape_a[0] != shape_b[0]:
          _a    	=				(
              '''Expected the same number of rows for A and B. '''
              f'Instead found A of size {shape_a} and B of size {shape_b}'
          )
          raise ValueError(_lowerCAmelCase       )

     if shape_b[1] != shape_c[1]:
          _a    	=				(
              '''Expected the same number of columns for B and C. '''
              f'Instead found B of size {shape_b} and C of size {shape_c}'
          )
          raise ValueError(_lowerCAmelCase       )

     _a    	=				pseudo_inv
     if a_inv is None:
          try:
               _a    	=				np.linalg.inv(_lowerCAmelCase       )
          except np.linalg.LinAlgError:
               raise ValueError(
                   '''Input matrix A is not invertible. Cannot compute Schur complement.'''       )

     return mat_c - mat_b.T @ a_inv @ mat_b


class     __lowerCamelCase  (					unittest.TestCase				):

     '''simple docstring'''


     def 							_UpperCAmelCase      (      self							)       ->							None:
          _a    	=				np.array([[1, 2, 1], [2, 1, 2], [3, 2, 4]]							)
          _a    	=				np.array([[0, 3], [3, 0], [2, 3]]							)
          _a    	=				np.array([[2, 1], [6, 3]]							)

          _a    	=				schur_complement(__UpperCAmelCase    ,				__UpperCAmelCase    ,				__UpperCAmelCase							)

          _a    	=				np.block([[a, b], [b.T, c]]							)

          _a    	=				np.linalg.det(__UpperCAmelCase							)
          _a    	=				np.linalg.det(__UpperCAmelCase							)
          _a    	=				np.linalg.det(__UpperCAmelCase							)

          self.assertAlmostEqual(__UpperCAmelCase    ,				det_a * det_s							)


     def 							_UpperCAmelCase      (      self							)       ->							None:
          _a    	=				np.array([[1, 2, 1], [2, 1, 2], [3, 2, 4]]							)
          _a    	=				np.array([[0, 3], [3, 0], [2, 3]]							)
          _a    	=				np.array([[2, 1], [6, 3]]							)

          with self.assertRaises(__UpperCAmelCase							):
               schur_complement(__UpperCAmelCase    ,				__UpperCAmelCase    ,				__UpperCAmelCase							)





     def 							_UpperCAmelCase      (      self							)       ->							None:
          _a    	=				np.array([[1, 2, 1], [2, 1, 2], [3, 2, 4]]							)
          _a    	=				np.array([[0, 3], [3, 0], [2, 3]]							)
          _a    	=				np.array([[2, 1, 3], [6, 3, 5]]							)

          with self.assertRaises(__UpperCAmelCase							):
               schur_complement(__UpperCAmelCase    ,				__UpperCAmelCase    ,				__UpperCAmelCase							)


if __name__ == "__main__":
   import doctest

   doctest.testmod()
   unittest.main()



"""simple docstring"""






def       A_   (   _lowerCAmelCase     :					int = 10_00       ):






     """simple docstring"""

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


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