const fi = 'DIENDAU.INP';
      fo = 'DIENDAU.OUT';
      MAXN = 20;
      dau:    array [1..2] of char    = ('+', '-');
      giatri: array [1..2] of integer = ( 1 ,  -1); // gia tri cua dau
var f: text;
    n, m, s: integer;
    a: array [1..MAXN] of char;
    dem: integer;


procedure Nhap;
begin
        assign(f, fi); reset(f);
        readln(f, n, m);
        close(f);
        dem:= 0;
        s:= 0;
end;

procedure InKQ;
var i: integer;
begin
        if s <> m then exit;
        inc(dem);
        write(f, dem:3, ': ');
        for i:= 1 to n do
                write(f, a[i], ' ', i, ' ');
        writeln(f, ' = ', m);
end;

procedure Try2(i: integer); // dien gia tri cho vi tri thu i
var j: integer;
begin
        for j:= 1 to 2 do
        begin
                a[i]:= dau[j];
                s := s + giatri[j] * i;
                if i = n then InKQ
                        else Try2(i+1);
                s := s - giatri[j] * i;
        end;
end;

BEGIN
        Nhap;
        assign(f, fo); rewrite(f);
        Try2(1);
        close(f);
END.
