```ts
export function bestHarvest(yields: number[]): number {
  if (!Array.isArray(yields)) {
    throw new Error("Input must be an array");
  }

  const n = yields.length;
  if (n === 0) return 0;

  for (const yield of yields) {
    if (!Number.isInteger(yield) || yield < 0) {
      throw new Error("All yields must be non-negative integers");
    }
  }

  const dp = new Array(n).fill(0);
  dp[0] = yields[0];

  for (let i = 1; i < n; i++) {
    dp[i] = Math.max(dp[i - 1], (i > 1 ? dp[i - 2] : 0) + yields[i]);
  }

  return dp[n - 1];
}
```