




from __future__ import annotations

from queue import Queue





class  __lowerCamelCase       :




    """simple docstring"""

    def __init__(       self     :     str   )      ->       None:
         lowerCAmelCase__		= {}


    def    a      (       self     :     List[Any]   )      ->       None:
         for i in self.vertices:
              print(SCREAMING_SNAKE_CASE__   ,	" : "   ,	" -> ".join([str(SCREAMING_SNAKE_CASE__   ) for j in self.vertices[i]]   )   )


    def    a      (       self     :     Optional[Any]   ,	SCREAMING_SNAKE_CASE__     :     int   ,	SCREAMING_SNAKE_CASE__     :     int   )      ->       None:
         if from_vertex in self.vertices:
              self.vertices[from_vertex].append(SCREAMING_SNAKE_CASE__   )
         else:
              lowerCAmelCase__		= [to_vertex]


    def    a      (       self     :     int   ,	SCREAMING_SNAKE_CASE__     :     int   )      ->       set[int]:
         lowerCAmelCase__		= set()

         # create a first in first out queue to store all the vertices for BFS
         lowerCAmelCase__		= Queue()

         # mark the source node as visited and enqueue it
         visited.add(SCREAMING_SNAKE_CASE__   )
         queue.put(SCREAMING_SNAKE_CASE__   )

         while not queue.empty():
              lowerCAmelCase__		= queue.get()

              # loop through all adjacent vertex and enqueue it if not yet visited
              for adjacent_vertex in self.vertices[vertex]:
                   if adjacent_vertex not in visited:
                        queue.put(SCREAMING_SNAKE_CASE__   )
                        visited.add(SCREAMING_SNAKE_CASE__   )
         return visited


if __name__ == "__main__":
     from doctest import testmod

     testmod(verbose=True)

     UpperCamelCase								=     Graph()
     g.add_edge(0, 1)
     g.add_edge(0, 2)
     g.add_edge(1, 2)
     g.add_edge(2, 0)
     g.add_edge(2, 3)
     g.add_edge(3, 3)

     g.print_graph()
     # 0  :  1 -> 2
     # 1  :  2
     # 2  :  0 -> 3
     # 3  :  3

     assert sorted(g.bfs(2)) == [0, 1, 2, 3]






from math import floor, sqrt



def 							_A   (						lowerCAmelCase_     :					int			):
     """simple docstring"""

     lowerCAmelCase__		= 0.0
     lowerCAmelCase__		= 1.0
     lowerCAmelCase__		= int(sqrt(lowerCAmelCase_			)			)
     lowerCAmelCase__		= root
     lowerCAmelCase__		= 0
     while integer_part != 2 * root:
          lowerCAmelCase__		= denominator * integer_part - numerator
          lowerCAmelCase__		= (n - numerator**2) / denominator
          lowerCAmelCase__		= int((root + numerator) / denominator			)
          period += 1
     return period



def 							_A   (						lowerCAmelCase_     :					int = 1_0000			):
     """simple docstring"""

     lowerCAmelCase__		= 0
     for i in range(2   ,				n + 1			):
          lowerCAmelCase__		= sqrt(lowerCAmelCase_			)
          if sr - floor(lowerCAmelCase_			) != 0 and continuous_fraction_period(lowerCAmelCase_			) % 2 == 1:
               count_odd_periods += 1
     return count_odd_periods


if __name__ == "__main__":
     print(F"""{solution(int(input().strip()))}""")
