def bronk(r, p, x, graph):
if len(p) == <NUM_LIT:0> and len(x) == <NUM_LIT:0>:<EOL><INDENT>yield r<EOL>return<EOL><DEDENT>for vertex in p[:]:<EOL><INDENT>r_new = r[::]<EOL>r_new.append(vertex)<EOL>p_new = [val for val in p if val in graph.get_neighbors_of(vertex)] <EOL>x_new = [val for val in x if val in graph.get_neighbors_of(vertex)] <EOL>for result in bronk(r_new, p_new, x_new, graph):<EOL><INDENT>yield result<EOL><DEDENT>p.remove(vertex)<EOL>x.append(vertex)<EOL><DEDENT>
This is used to fine cliques and remove them from graph

    Args:
        graph (graph): this is the graph of verticies to search for
            cliques
        p (list): this is a list of the verticies to search
        r (list): used by bronk for the search
        x (list): used by bronk for the search

    Yields:
        list : found clique of the given graph and verticies