// Factor Combinations class Solution { void f(int n, int k, vector &a, vector> &r) { for (; k*k <= n; k++) if (n%k == 0) { a.push_back(k); f(n/k, k, a, r); a.pop_back(); } if (k <= n) { a.push_back(n); f(1, n, a, r); a.pop_back(); } } public: vector> getFactors(int n) { vector a; vector> r; f(n, 2, a, r); return r; } };