uses
	sysutils;

function bin(k: longint): string;
var
	r: string;
begin
	r := '';
	while k > 0 do begin
		r := '01'[k mod 2 + 1] + r;
		k := k div 2;
	end;
	bin := copy(r, 2, length(r) - 1);
end;

var
	i, j, k, l, n: longint;
	q1, q2: int64;
	sum: longint;
	r: string;
	ok: boolean;

begin
	n := 12;
	k := 0;
	writeln(n);
	for i := 0 to n do begin
		for j := 1 to 1 shl i do begin
			inc(k);

			r := bin(k);
			if length(r) mod 2 = 0 then begin
				q1 := strtoint('0' + copy(r, 1, length(r) div 2));
				q2 := strtoint('0' + copy(r, length(r) div 2 + 1, length(r) div 2));
				ok := (q1 * q2) mod 3 = 0;
			end else begin
				ok := false;
			end;

			writeln('-+'[ord(ok) + 1] + bin(k));
		end;
	end;
end.