

def     UpperCAmelCase__       (    _A   :				int							):





  '''simple docstring'''







  if not isinstance(_UpperCamelCase			,   _UpperCamelCase							):
    raise TypeError('''recursive_lucas_number accepts only integer arguments.'''							)
  if n_th_number == 0:
    return 2
  if n_th_number == 1:
    return 1

  return recursive_lucas_number(n_th_number - 1							) + recursive_lucas_number(
      n_th_number - 2							)




def     UpperCAmelCase__       (    _A   :				int							):





  '''simple docstring'''







  if not isinstance(_UpperCamelCase			,   _UpperCamelCase							):
    raise TypeError('''dynamic_lucas_number accepts only integer arguments.'''							)
  a__,   a__						=2, 1
  for _ in range(_UpperCamelCase							):
    a__,   a__						=b, a + b
  return a


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

       testmod()
       lowerCamelCase     =      int(input('''Enter the number of terms in lucas series:\n''').strip())
       print('''Using recursive function to calculate lucas series:''')
       print(''' '''.join(str(recursive_lucas_number(i)) for i in range(n)))
       print('''\nUsing dynamic function to calculate lucas series:''')
       print(''' '''.join(str(dynamic_lucas_number(i)) for i in range(n)))



import heapq




def     UpperCAmelCase__       (    _A   :				Optional[Any]			,   _A   :				str			,   _A   :				Optional[Any]							):





  '''simple docstring'''







  a__						=[(0, start)]  # cost from start node,end node
  a__						=set()
  while heap:
    ((a__),   (a__))						=heapq.heappop(_A							)
    if u in visited:
      continue
    visited.add(_A							)
    if u == end:
      return cost
    for v, c in graph[u]:
      if v in visited:
        continue
      a__						=cost + c
      heapq.heappush(_A			,   (next_item, v)							)
  return -1


lowerCamelCase     =      {
    '''A''': [['''B''', 2], ['''C''', 5]],
    '''B''': [['''A''', 2], ['''D''', 3], ['''E''', 1], ['''F''', 1]],
    '''C''': [['''A''', 5], ['''F''', 3]],
    '''D''': [['''B''', 3]],
    '''E''': [['''B''', 4], ['''F''', 3]],
    '''F''': [['''C''', 3], ['''E''', 3]],
}
lowerCamelCase     =      {
    '''B''': [['''C''', 1]],
    '''C''': [['''D''', 1]],
    '''D''': [['''F''', 1]],
    '''E''': [['''B''', 1], ['''F''', 3]],
    '''F''': [],
}
lowerCamelCase     =      {
    '''B''': [['''C''', 1]],
    '''C''': [['''D''', 1]],
    '''D''': [['''F''', 1]],
    '''E''': [['''B''', 1], ['''G''', 2]],
    '''F''': [],
    '''G''': [['''F''', 1]],
}

lowerCamelCase     =      dijkstra(G, '''E''', '''C''')
print(short_distance)  # E -- 3 --> F -- 3 --> C == 6

lowerCamelCase     =      dijkstra(Ga, '''E''', '''F''')
print(short_distance)  # E -- 3 --> F == 3

lowerCamelCase     =      dijkstra(Ga, '''E''', '''F''')
print(short_distance)  # E -- 2 --> G -- 1 --> F == 3

if __name__ == "__main__":
       import doctest

       doctest.testmod()
