private static <T> List<T> permutationHelper(final long no, final LinkedList<T> in, final List<T> out) {
        if (in.isEmpty()) {
            return out;
        }
        final long subFactorial = factorial(in.size() - 1);
        out.add(in.remove((int) (no / subFactorial)));
        return permutationHelper((int) (no % subFactorial), in, out);
    }
General Permutation support from
http://minborgsjavapot.blogspot.com/2015/07/java-8-master-permutations.html

@author Per Minborg
common-parent/combinatorics/src/main/java/com/speedment/common/combinatorics/internal/PermutationUtil.java