module A = Array
module C = Char
module I = Int64
module L = List
module Q = Queue

let pf = Printf.printf
let sf = Scanf.scanf
let ssf = Scanf.sscanf

let read_int () = sf "%d " (fun x -> x)
let read_float () = sf "%f " (fun x -> x)
let read_str () = sf "%s " (fun x -> x)
let read_array read n = A.init n (fun _ -> read ())
let err s = raise (Failure s)

let range s t = A.init (t - s) @@ (+) s
let foreach fold_f init s t map_f =
  range s t |> A.map map_f |> A.fold_left fold_f init

let inf = int_of_float 1e18
let eps = 1e-11

module S = struct
  include String
  let of_array a = String.init (A.length a) (A.get a)
  let to_array s = A.init (String.length s) (String.get s)
end;;

let rec search vals str sum goal =
  match vals with
  | [] ->
     if sum = goal
     then Some str
     else None
  | x :: xs ->
     (* case + *)
     let case_plus = search xs (str ^ "+" ^ string_of_int x) (sum + x) goal in
     ( match case_plus with
       | None -> search xs (str ^ "-" ^ string_of_int x) (sum - x) goal
       | _ -> case_plus )

let () =
  let s = read_str () in
  let vals = S.to_array s |> A.map int_of_char |> A.to_list in
  let vals = L.map (fun x -> x - int_of_char '0') vals in
  let head = L.hd vals in
  let tail = L.tl vals in
  let res = search tail (string_of_int head) head 7 in
  match res with
  | None -> ()
  | Some x -> pf "%s=7\n" x
  
