factorial second version