<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def blpop(self, key, *keys, timeout=0, encoding=_NOTSET):
 """Remove and get the first element in a list, or block until one is available. :raises TypeError: if timeout is not int :raises ValueError: if timeout is less than 0 """

        if not isinstance(timeout, int):
            raise TypeError("timeout argument must be int")
        if timeout < 0:
            raise ValueError("timeout must be greater equal 0")
        args = keys + (timeout,)
        return self.execute(b'BLPOP', key, *args, encoding=encoding)