{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE BangPatterns #-} import Control.Applicative import Control.Monad import Control.Arrow import Data.List import Data.Maybe import Data.Char import qualified Data.ByteString.Char8 as B import Text.Printf readInt = ( readLn :: IO Int ) readInts = map ( read :: String -> Int ) . words <$> getLine getList = map ( fst . fromJust . B.readInt ) . B.words <$> B.getLine which a b f = if f then a else b mp [ a, b ] = ( a, b ) main = getLine >> getList >>= putStrLn . which "YES" "NO" . f . sort f ( a : b : l ) = f' ( b - a ) ( b : l ) where f' 0 _ = False f' d ( a : b : l ) | b - a /= d = False | otherwise = f' d ( b : l ) f' _ _ = True