


def 	lowerCAmelCase_					(						__UpperCAmelCase:    int   )   ->			bool:


    if p < 2:
        raise ValueError('''p should not be less than 2!'''   )
    elif p == 2:
        return True

    UpperCamelCase__							:       List[str]      =   4
    UpperCamelCase__							:       Optional[int]      =   (1 << p) - 1
    for _ in range(p - 2   ):
        UpperCamelCase__							:       List[Any]      =   ((s * s) - 2) % m
    return s == 0


if __name__ == "__main__":
  print(lucas_lehmer_test(7))
  print(lucas_lehmer_test(11))








def 	lowerCAmelCase_					(						__UpperCAmelCase:    dict   )   ->			set:
    UpperCamelCase__							:       int      =   set()
    # edges = list of graph's edges
    UpperCamelCase__							:       str      =   get_edges(__UpperCAmelCase   )

    # While there are still elements in edges list, take an arbitrary edge
    # (from_node, to_node) and add his extremity to chosen_vertices and then
    # remove all arcs adjacent to the from_node and to_node
    while edges:
        UpperCamelCase__     ,UpperCamelCase__							:       List[Any]      =   edges.pop()
        chosen_vertices.add(__UpperCAmelCase   )
        chosen_vertices.add(__UpperCAmelCase   )
        for edge in edges.copy():
            if from_node in edge or to_node in edge:
                edges.discard(__UpperCAmelCase   )
    return chosen_vertices




def 	lowerCAmelCase_					(						__UpperCAmelCase:    dict   )   ->			set:
    UpperCamelCase__							:       Optional[int]      =   set()
    for from_node, to_nodes in graph.items():
        for to_node in to_nodes:
            edges.add((from_node, to_node)   )
    return edges


if __name__ == "__main__":
  import doctest

  doctest.testmod()

  # graph = {0: [1, 3], 1: [0, 3], 2: [0, 3, 4], 3: [0, 1, 2], 4: [2, 3]}
  # print(f"Matching vertex cover:\n{matching_min_vertex_cover(graph)}")

