program factorial(input,output);
  var val: integer;
  function factorial(n: integer): integer;
    function helper(n: integer; acc: integer): integer;
    begin { factorial/helper }
      if (n = 0) then
        helper := acc
      else 
        helper := helper(n-1, acc*n);
    end; { factorial/helper }
  begin { factorial }
    factorial := helper(n, 1);
  end; { factorial}
begin { program }
  write('Please enter a number: ');
  readln(val);
  write('The factorial of ');
  write(val:1);
  write(' is ');
  write(factorial(val):1);
  writeln('.')
end. { program }

