import Data.Sequence
import Data.List
--戦略：両端からとっていく。値が小さい方を優先的にとらせる。
--シーケンスが空になったときの差を計算すればいい。

solver::Seq Int->(Int,Int)->Int
solver sq (x,y) =  if sq == empty then abs (x-y)
                                  else let l:< rest_r = viewl sq in
                                       let rest_l:> r = viewr sq in
                                       let (x',y',rest) = minimumBy (\ (x,y,_) (z,w,_)-> compare (abs (x-y))(abs (z-w))) [(x+r,y,rest_l),(x+l,y,rest_r),(x,y+r,rest_l),(x,y+l,rest_r)]in
                                       solver rest (x',y')


preproc::Seq Int -> (Seq Int,(Int,Int))
preproc sq = let l  :< rest = viewl sq in
             let rest' :> r = viewr rest in
             (rest',(l,r))

main::IO()
main=do
  _<-getLine
  datc<-getLine
  let dat = fromList (map read (words datc))
  let (d,(l,r))=preproc dat
  print (solver d (l,r))
