PythonとかC++の順列の生成って内部的にはどうやってるの?