add script: factorial