O(N!)