

left_assoc::Int->[Int]->[Bool]->Int
left_assoc store [] _    = store
left_assoc store _  []   = store
left_assoc store (x:xs) (op:ops) = left_assoc ((if op then (+) else (-)) store x) xs ops

all_pat::Int ->[[Bool]]
all_pat n = (iterate (\ls-> concat [map (b:) ls|b<-[True,False]]) [[]])!!n

n_solver::Int->Int->[Int]->[[Bool]]
n_solver n v (x:xs) = filter (\bs-> (left_assoc x xs  bs)==v) (all_pat n)

gen_str::[Int]->[Bool]->Int->String
gen_str (x:[]) []     v = (show x) ++ "=" ++ (show v)
gen_str (x:xs) (y:ys) v = (show x) ++ (if y then "+" else "-") ++ (gen_str xs ys v)

main::IO()
main=do
  str<-getLine
  let dat = map (\c-> read [c]) str
  let op_pat = head (n_solver 3 7 dat)
  putStr (gen_str dat op_pat (left_assoc (head dat) (tail dat) op_pat))
  putStr "\n"