program gaukite_skaiciu;

  const MAX = 9; { duot— skaitmen— skai‡ius }
  type operacijos = (plius, minus, nieko);
       lentele = array [1..MAX] of operacijos;

  var n: longint;     { duotasis skai‡ius }
      oper: lentele;  { operacij— lentel‚ }
      rasta: boolean; { ar rastas nors vienas sprendinys }

  function skaiciuoti (oper: lentele): longint;
    { apskai‡iuoja reižkinio reikžmŠ }
    var i, reiksme, demuo, zenklas: longint;
  begin
    reiksme := 0;
    demuo := 1; zenklas := 1;
    for i := 2 to MAX do
      if oper[i-1] = nieko
         then demuo := demuo*10 + i
         else begin
                reiksme := reiksme + zenklas*demuo;
                demuo := i;
                if oper[i-1] = plius
                   then zenklas := 1
                   else zenklas := -1;
               end;
    skaiciuoti := reiksme + zenklas*demuo
  end; { skai‡iuoti }

  procedure spausdinti (oper: lentele);
    { ižspausdina rast…j reižkin }
    var i: integer;
  begin
    write ('1');
    for i := 2 to MAX do
      case oper[i-1] of
        nieko: write (i);
        plius: write ('+', i);
        minus: write ('-', i);
      end;
    writeln;
  end; { spausdinti }

  procedure formuoti_skaiciu (k: integer);
    { rekursin‚ proced–ra formuojanti visus galimus reižkinius }
    var op: operacijos;
  begin
    if k = MAX { jei pasiek‚me paskutin skaitmen }
       then begin
              if skaiciuoti (oper) = n { jei gavome tai ko reikia }
                 then begin
                        rasta := true; { spausdiname rezultat… }
                        spausdinti (oper);
                      end;
            end
       else for op := plius to nieko do { bandome visus variantus }
              begin
                oper[k] := op;
                formuoti_skaiciu (k+1)
              end;
  end; { formuoti_skai‡i— }

begin
  readln (n);
  rasta := false; { n‚ vieno sprendinio nerasta }
  formuoti_skaiciu (1);
  if not rasta
     then writeln ('NRA SPRENDINIO');
end.
