<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def bronk(r, p, x, graph):
 """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 """

    if len(p) == 0 and len(x) == 0:
        yield r
        return
    for vertex in p[:]:
        r_new = r[::]
        r_new.append(vertex)
        p_new = [val for val in p if val in graph.get_neighbors_of(vertex)] # p intersects N(vertex)
        x_new = [val for val in x if val in graph.get_neighbors_of(vertex)] # x intersects N(vertex)
        for result in bronk(r_new, p_new, x_new, graph):
            yield result
        p.remove(vertex)
        x.append(vertex)