import qualified Data.Vector.Unboxed as VU
import qualified Data.ByteString.Char8 as BS
import Control.Monad
import Data.List
import Data.Char

data Op = Add | Sub

instance Show Op where
    show Add = "+"
    show Sub = "-"

apply :: Op -> Int -> Int -> Int
apply Add x y = x + y
apply Sub x y = x - y

data Expr = Val Int | App Op Expr Expr

instance Show Expr where
    show (Val n)     = show n
    show (App o l r) = brak l ++ show o ++ brak r
                        where brak (Val n) = show n
                              brak e       = show e

eval :: Expr -> Int
eval (Val n) = n
eval (App o l r) = apply o (eval l) (eval r)



main :: IO ()
main = do
    [a,b,c,d] <- map digitToInt <$> getLine
    let m = do
        i1 <- [Add,Sub]
        i2 <- [Add,Sub]
        i3 <- [Add,Sub]
        let xxx = App i3 (App i2 (App i1 (Val a) (Val b)) (Val c)) (Val d)
        guard $ eval xxx == 7
        return $ show xxx ++ "=7"
    putStrLn $ head m

readInt :: BS.ByteString -> Maybe (Int,BS.ByteString)
readInt xs = do
    (x,ys) <- BS.readInt xs
    return (x,BS.tail ys)