code: def preprocess(
          self, nb: "NotebookNode", resources: dict
      ) -> Tuple["NotebookNode", dict]:
          
  
          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
docs: Preprocess the entire Notebook.