#nullable enable #region var _input = Array.Empty(); var _iter = 0; string String() { while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Split(' '), 0); return _input[_iter++]; } T I() where T : IParsable => T.Parse(String(), null); #endregion T[] Range(int n, Func F) => Enumerable.Range(0, n).Select(_ => F()).ToArray(); bool Ans() { var n = I(); var az = Range(n + 1, I); var mi = -1; for (var i = n; i > 0; i--) if (az[i] > 0) { mi = i; break; } if (mi < 0) return true; long a1 = az[1]; if (mi == 1) return a1 % 2 == 0 || a1 > n; az[mi]--; long min = mi; for (long i = mi; i >= 2; i--) min += i * (az[i] - 2); if (min > a1) return false; return a1 > n || (a1 - min) % 2 == 0; } Console.WriteLine(Ans() ? "Yes" : "No");