code: def remove(self, elem):
          
  
          builder = _PListBuilder()
          head = self
          while head:
              if head.first == elem:
                  return builder.append_plist(head.rest)
  
              builder.append_elem(head.first)
              head = head.rest
  
          raise ValueError('{0} not found in PList'.format(elem))
docs: Return new list with first element equal to elem removed. O(k) where k is the position
          of the element that is removed.
  
          Raises ValueError if no matching element is found.
  
          >>> plist([1, 2, 1]).remove(1)
          plist([2, 1])