input: 
  class HashTable:
      def __init__(self):
          """Initialize an empty hash table."""
          self.table = [[] for _ in range(256)]
   
      def insert(self, key, value):
          """Insert a key-value pair into the hash table.
          If the key already exists, update its value.
          """
          h = hash(key) % 256
          for i, kv in enumerate(self.table[h]):
              if kv[0] == key:
                  self.table[h][i] = (key, value)
                  return
          self.table[h].append((key, value))
   
      def retrieve(self, key):
          """Retrieve the value associated with the given key.
          If the key is not found, return None.
          """
          h = hash(key) % 256
          for kv in self.table[h]:
              if kv[0] == key:
                  return kv[1]
   
      def delete(self, key):
          """Delete the key-value pair associated with the given key.
          If the key is not found, do nothing.
          """
          h = hash(key) % 256
          for i, kv in enumerate(self.table[h]):
              if kv[0] == key:
                  del self.table[h][i]
                  return
  
  # Example:
  # h = HashTable()
  # h.insert("a", 1)
  # h.insert("b", 2)
  # h.retrieve("a") == 1
  # h.delete("b")
  # h.retrieve("b") == None
  
output:     
      def __contains__(self, key):
          """Check if the given key exists in the hash table.
          Returns True if the key exists, otherwise False.
          """
          h = hash(key) % 256
          for kv in self.table[h]:
              if kv[0] == key:
                  return True
          return False
  
      def __len__(self):
          """Return the number of key-value pairs in the hash table."""
          count = 0
          for bucket in self.table:
              count += len(bucket)
          return count
  
      def keys(self):
          """Return a list of all keys in the hash table."""
          return [kv[0] for bucket in self.table for kv in bucket]
  
      def values(self):
          """Return a list of all values in the hash table."""
          return [kv[1] for bucket in self.table for kv in bucket]
  
      def items(self):
          """Return a list of all key-value pairs in the hash table."""
          return [kv for bucket in self.table for kv in bucket]
  