class Roster:
    """ Represents a roster of members.
    @param dict members: represents this roster’s members
    """
    def __init__(self):
        """
        Initialize new roster self.
        @param Roster self: this Roster
        @rtype: None
        """
        self.members = {}

    def add(self, member):
        """
        Add member to roster self.
        @param Roster self: this Roster
        @param tuple member: member record to add
        @rtype: None
        Assume:
        -- member is a tuple with member[0] not in self.members,
        -- len(member) > 1
        """
        self.members[member[0]] = member[1:]

    def remove(self, member):
        """
        Remove member from roster self.
        @param Roster self: this Roster
        @param tuple member: member record to be removed
        @rtype: None
        Assume:
        --member is a tuple with member[0] in self.members
        --len(member) > 1
        """
        del(self.members[member[0]])

    def __str__(self):
            """
            Return a string representation of the members of roster self.
            @param Roster self: this Roster
            @rtype: str
            """
            raise NotImplementedError

class RunnerRoster(Roster):
    """
    Represents a roster of runners.
    """

    def __str__(self):
        """
        Return a string representation of the members of RunnerRoster self.
        @param RunnerRoster self: this RunnerRoster
        @rtype: str
        """
        str_rep = ""
        for member in self.members:
            str_rep += "Email: {}, Speed: {}\n".format(member,
                                                       self.members[member][0])
        return str_rep.strip()
