```python
def best_harvest(yields: list) -> int:
    if not isinstance(yields, list):
        raise ValueError("Input must be a list")
    
    n = len(yields)
    if n == 0:
        return 0
    
    if any(not isinstance(yield_, int) or yield_ < 0 for yield_ in yields):
        raise ValueError("All yields must be non-negative integers")
    
    if n == 1:
        return yields[0]
    
    # dp[i] is the maximum harvest up to day i
    dp = [0] * n
    dp[0] = yields[0]
    dp[1] = max(yields[0], yields[1])
    
    for i in range(2, n):
        dp[i] = max(dp[i-1], dp[i-2] + yields[i])
    
    return dp[n-1]
```