typedef long long ll; class Solution { private: vector res; public: vector maximumEvenSplit(long long finalSum) { vector tmp; if (finalSum % 2 != 0) return {}; dfs(tmp, finalSum, finalSum, 2); return res; } bool dfs(vector& tmp, ll curr, ll finalSum, ll begin) { if (!curr) { if (!res.size()) { res = tmp; } return true; } if (curr < 0) return false; for (ll i = begin; i <= finalSum; i += 2) { tmp.push_back(i); curr -= i; if (dfs(tmp, curr, finalSum, i + 2)) return true; curr += i; tmp.pop_back(); } return false; } };