Preprocess the entire Notebook.

def preprocess(
        self, nb: "NotebookNode", resources: dict
    ) -> Tuple["NotebookNode", dict]:
        """Preprocess the entire Notebook."""

        exam_num = resources["exam_num"]
        time = resources["time"]
        date = resources["date"]

        nb.cells.insert(0, new_markdown_cell(source="---"))
        nb.cells.insert(0, new_markdown_cell(source=""))
        nb.cells.insert(0, exam_instructions_cell)
        first_cell_source = (
            "# ME 2233: Thermodynamic Principles\n\n"
            f"# Exam {exam_num} - {time}\n\n# {date}"
        )
        nb.cells.insert(0, new_markdown_cell(source=first_cell_source))

        return nb, resources