def find_points_in_cluster(merge_key, clusters, all_clusters):
    """ Finds all data points that belong to a merge. Removes all involved merges from clusters.

    :param merge_key: Key of the merge in the clusters dict
    :param clusters: Dictionary with merge_key as key and merged clusters as value
    :param all_clusters: Like clusters but also includes merges with clusters larger than cut distance
    :return: list of points, updated clusters
    """
    points = []
    queue = clusters[merge_key][:-1]
    del clusters[merge_key]
    while len(queue) > 0:
        cluster = queue.pop()
        if type(cluster) == int:
            points.append(cluster)
        else:
            queue.append(all_clusters[cluster][0])
            queue.append(all_clusters[cluster][1])
            clusters.pop(cluster, None)

    return points, clusters