var
a: array[0..15] of byte;
function factorial(n: byte): int64;
begin
if n < 2 then
exit(1);
factorial := factorial(pred(n)) * n
end;
function number(
a: array of byte;
depth: byte
): int64;
var
i, sum: byte;
b: array[0..9] of byte;
begin
if depth = 15 then
begin
sum := 0;
for i := 1 to 15 do
inc(sum, a[i]);
if sum <> 69 then
exit(0);
number := 1307674368000; (* factorial(15) *)
for i := 0 to 9 do
b[i] := 0;
for i := 1 to 15 do
inc(b[a[i]]);
for i := 0 to 9 do
number := number div factorial(b[i]);
exit
end;
number := 0;
i := a[depth];
inc(depth);
repeat
a[depth] := i;
number := number + number(a, depth);
inc(i)
until i = 10
end;
begin
a[0] := 0;
writeln(number(a, 0))
end.
dmFyCiAgYTogYXJyYXlbMC4uMTVdIG9mIGJ5dGU7CgoKZnVuY3Rpb24gZmFjdG9yaWFsKG46IGJ5dGUpOiBpbnQ2NDsKICBiZWdpbgogICAgaWYgbiA8IDIgdGhlbgogICAgICBleGl0KDEpOwogICAgZmFjdG9yaWFsIDo9IGZhY3RvcmlhbChwcmVkKG4pKSAqIG4KICBlbmQ7CgoKZnVuY3Rpb24gbnVtYmVyKAogIGE6IGFycmF5IG9mIGJ5dGU7CiAgZGVwdGg6IGJ5dGUKKTogaW50NjQ7CgogIHZhcgogICAgaSwgc3VtOiBieXRlOwogICAgYjogYXJyYXlbMC4uOV0gb2YgYnl0ZTsKCiAgYmVnaW4KICAgIGlmIGRlcHRoID0gMTUgdGhlbgogICAgICBiZWdpbgogICAgICAgIHN1bSA6PSAwOwogICAgICAgIGZvciBpIDo9IDEgdG8gMTUgZG8KICAgICAgICAgIGluYyhzdW0sIGFbaV0pOwogICAgICAgIGlmIHN1bSA8PiA2OSB0aGVuCiAgICAgICAgICBleGl0KDApOwoKICAgICAgICBudW1iZXIgOj0gMTMwNzY3NDM2ODAwMDsgKCogZmFjdG9yaWFsKDE1KSAqKQogICAgICAgIGZvciBpIDo9IDAgdG8gOSBkbwogICAgICAgICAgYltpXSA6PSAwOwogICAgICAgIGZvciBpIDo9IDEgdG8gMTUgZG8KICAgICAgICAgIGluYyhiW2FbaV1dKTsKICAgICAgICBmb3IgaSA6PSAwIHRvIDkgZG8KICAgICAgICAgIG51bWJlciA6PSBudW1iZXIgZGl2IGZhY3RvcmlhbChiW2ldKTsKICAgICAgICBleGl0CiAgICAgIGVuZDsKCiAgICBudW1iZXIgOj0gMDsKICAgIGkgOj0gYVtkZXB0aF07CiAgICBpbmMoZGVwdGgpOwogICAgcmVwZWF0CiAgICAgIGFbZGVwdGhdIDo9IGk7CiAgICAgIG51bWJlciA6PSBudW1iZXIgKyBudW1iZXIoYSwgZGVwdGgpOwogICAgICBpbmMoaSkKICAgIHVudGlsIGkgPSAxMAogIGVuZDsKCgpiZWdpbgogIGFbMF0gOj0gMDsKICB3cml0ZWxuKG51bWJlcihhLCAwKSkKZW5kLg==