import Control.Applicative ((<$>)) import Data.List import Data.Char (isSpace) import Data.ByteString.Char8 (ByteString) import qualified Data.ByteString.Char8 as B main :: IO () main = do B.getLine solve <$> readIntList >>= putStrLn solve :: [Int] -> String solve xs = let sxs = sort xs in f $ zipWith (-) (tail sxs) sxs where f (y:ys) = if (y > 0) && all (== y) ys then "YES" else "NO" readIntList :: IO [Int] readIntList = unfoldr f <$> B.getLine where f s = do (n, s') <- B.readInt s return (n, B.dropWhile isSpace s')