time : O(n^n), space O(1)