import Control.Monad import Control.Applicative import Data.List import qualified Data.Map as Map import Data.Array import qualified Data.ByteString.Char8 as BC import Data.Maybe readInts = map (fst . fromJust . BC.readInt) . BC.words <$> BC.getLine readInt :: BC.ByteString -> Int readInt = fst . fromJust . BC.readInt strToInt s = (read :: String -> Int) s main = do n <- readLn xsn <- map strToInt . words <$> getLine let xs = sort xsn let xn = array (0,n-1) ([(k ,(xs!!k)) | k <- [0..(n-1)]] ) if n==1 then print 0 else print $ maximum [abs((xn!i)-(xn!(i+1))) | i <-[1..(n-2)]]