





# using dfs for finding eulerian path traversal




def     SCREAMING_SNAKE_CASE			(      lowerCAmelCase    ,       lowerCAmelCase    ,       lowerCAmelCase    ,       lowerCAmelCase=None					):
       _UpperCamelCase              =						(path or []) + [u]
       for v in graph[u]:
              if visited_edge[u][v] is False:
                     _UpperCamelCase       ,		_UpperCamelCase              =						True, True
                     _UpperCamelCase              =						dfs(lowerCAmelCase__    ,       lowerCAmelCase__    ,       lowerCAmelCase__    ,       lowerCAmelCase__					)
       return path


def     SCREAMING_SNAKE_CASE			(      lowerCAmelCase    ,       lowerCAmelCase					):
       _UpperCamelCase              =						0
       _UpperCamelCase              =						-1
       for i in range(lowerCAmelCase__					):
              if i not in graph.keys():
                     continue
              if len(graph[i]					) % 2 == 1:
                     odd_degree_nodes += 1
                     _UpperCamelCase              =						i
       if odd_degree_nodes == 0:
              return 1, odd_node
       if odd_degree_nodes == 2:
              return 2, odd_node
       return 3, odd_node


def     SCREAMING_SNAKE_CASE			(      lowerCAmelCase    ,       lowerCAmelCase					):
       _UpperCamelCase              =						[[False for _ in range(max_node + 1					)] for _ in range(max_node + 1					)]
       _UpperCamelCase       ,		_UpperCamelCase              =						check_circuit_or_path(lowerCAmelCase__    ,       lowerCAmelCase__					)
       if check == 3:
              print('''graph is not Eulerian'''					)
              print('''no path'''					)
              return
       _UpperCamelCase              =						1
       if check == 2:
              _UpperCamelCase              =						odd_node
              print('''graph has a Euler path'''					)
       if check == 1:
              print('''graph has a Euler cycle'''					)
       _UpperCamelCase              =						dfs(lowerCAmelCase__    ,       lowerCAmelCase__    ,       lowerCAmelCase__					)
       print(lowerCAmelCase__					)


def     SCREAMING_SNAKE_CASE			(      ):
       _UpperCamelCase              =						{1: [2, 3, 4], 2: [1, 3], 3: [1, 2], 4: [1, 5], 5: [4]}
       _UpperCamelCase              =						{1: [2, 3, 4, 5], 2: [1, 3], 3: [1, 2], 4: [1, 5], 5: [1, 4]}
       _UpperCamelCase              =						{1: [2, 3, 4], 2: [1, 3, 4], 3: [1, 2], 4: [1, 2, 5], 5: [4]}
       _UpperCamelCase              =						{1: [2, 3], 2: [1, 3], 3: [1, 2]}
       _UpperCamelCase              =						{
           1: [],
           2: []
           # all degree is zero
       }
       _UpperCamelCase              =						10
       check_euler(lowerCAmelCase__    ,       lowerCAmelCase__					)
       check_euler(lowerCAmelCase__    ,       lowerCAmelCase__					)
       check_euler(lowerCAmelCase__    ,       lowerCAmelCase__					)
       check_euler(lowerCAmelCase__    ,       lowerCAmelCase__					)
       check_euler(lowerCAmelCase__    ,       lowerCAmelCase__					)


if __name__ == "__main__":
       main()













def     SCREAMING_SNAKE_CASE			(      lowerCAmelCase = 1_000					):
       _UpperCamelCase              =						3
       _UpperCamelCase              =						0
       while a < n:
              if a % 3 == 0 or a % 5 == 0:
                     result += a
              elif a % 15 == 0:
                     result -= a
              a += 1
       return result


if __name__ == "__main__":
       print(F'''{solution() = }''')






