import bisect from collections import defaultdict from typing import List, DefaultDict class School: def __init__(self) -> None: self.student_db: DefaultDict[int, List[str]] = defaultdict(list) def add_student(self, name: str, grade: int) -> None: bisect.insort(self.student_db[grade], name) def grade(self, grade_number: int) -> List[str]: if grade_number not in self.student_db.keys(): return [] return self.student_db[grade_number] def roster(self) -> List[str]: return sum([self.grade(grade_number) for grade_number in sorted(self.student_db)], [])