import Data.Bool
import Data.Char
import Data.List
import qualified Data.ByteString.Char8 as B
main=putStrLn.solve.unfoldr(B.readInt.B.dropWhile isSpace)=<<B.getContents
solve::[Int]->String
solve(n:ss)=bool"No""Yes"$f[(n,v)]vs
  where(v:vs)=reverse.sort$ss
f ts vs
  |r==False=False
  |null ss=True
  |otherwise=f ss ws
  where(r,ss,ws)=foldr g(True,[],vs)ts
g(k,v)(r,ts,xs)=(r&&all(v>)ys,zipWith(\i t->(k-i,t))[1..k-1]ys++ts,zs)
  where(ys,zs)=splitAt k xs