class WorkingMemory:
    def __init__(self, max_capacity=80):
        self.max_capacity = max_capacity
        self.memory = {}
        self.current_usage = 0

    def add_item(self, item, key=None):
        """Add an item to working memory."""
        if self.current_usage + 1 > self.max_capacity:
            print("Memory is full. Cannot add more items.")
            return None
        
        if key is None:
            # Generate a unique key for the item
            import uuid
            key = str(uuid.uuid4())
        
        self.memory[key] = {"item": item, "timestamp": datetime.now()}
        self.current_usage += 1
        print(f"Added: {key} - {item}")
        return key

    def update_item(self, key, new_value):
        """Update the value of an existing item in working memory."""
        if key not in self.memory:
            print("Key does not exist.")
            return None
        
        old_value = self.memory[key]["item"]
        self.memory[key]["item"] = new_value
        self.memory[key]["timestamp"] = datetime.now()
        print(f"Updated: {key} - {old_value} to {new_value}")
        return key

    def retrieve_item(self, key):
        """Retrieve an item from working memory."""
        if key not in self.memory:
            print("Key does not exist.")
            return None
        
        return self.memory[key]["item"]

    def list_items(self):
        """List all items currently stored in working memory."""
        for key, value in self.memory.items():
            print(f"Key: {key}, Item: {value['item']}, Timestamp: {value['timestamp']}")

    def remove_item(self, key):
        """Remove an item from working memory."""
        if key not in self.memory:
            print("Key does not exist.")
            return None
        
        del self.memory[key]
        self.current_usage -= 1
        print(f"Removed Key: {key}")

# Example usage of the WorkingMemory class

wm = WorkingMemory(max_capacity=80)

# Adding items to working memory
wm.add_item("apple")
wm.add_item("banana")
wm.add_item("cherry")

# Listing all items in working memory
wm.list_items()

# Updating an item in working memory
wm.update_item("apple", "pear")

# Retrieving an item from working memory
print(wm.retrieve_item("banana"))

# Removing an item from working memory
wm.remove_item("banana")

# Listing all items in working memory after removing one
wm.list_items()