class Pair[K,V]:
    # Representation
    _key: K
    _value: V
    
    # Constructor.
    def __init__(self, k: K, v: V) -> None: 
        self._key = k;  self._value = v
        
    # Access.self.    
    def get_key(self)    -> K: return self._key
    def get_value(self)  -> V: return self._value
       
    # String representation.
    def __str__(self) -> str:
        return "<" + str(self._key) + "," + str(self._value) + ">"

    # Equality.
    def __eq__(self, other) -> bool:
        if other is None: return False
        if other is self: return True
        if not isinstance(other, Pair): return False
        return (self._key == other._key) and (self._value == other._value)