var n: integer; c: array[1 .. 100] of integer; print: boolean; const diapazon: set of byte = [1, 2, 4, 9, 100]; var count: integer; procedure find(num, k, len: integer); var i, j: smallint; begin if num = 0 then begin print := true; for i := 1 to pred(len) do begin if not (c[i] in diapazon) then print := false else begin for j := 1 to pred(i) do if c[j] = c[i] then print := false; end; end; if print then begin inc(count); end; end else begin for i:=1 to k do if num-i>=0 then begin c[len] := i; find(num - i, i, len + 1); end; end; end; var i: integer; begin for i := 1 to 20 do if not (i in diapazon) then begin n := i; count := 0; find(n,n,1); if count = 0 then begin writeln('result = ', i); break; end; end; end.