#include <iostream>
#include <vector>
using namespace std;
int mostCommonSum(const vector<int>& a) {
int sum = 0;
for(auto num: a) {
sum += num;
}
vector<int> dp(sum + 1);
dp[0] = 1;
sum = 0;
for (int i = 0; i < (int)a.size(); i++) {
sum += a[i];
for(int j = sum; j >= 0; j--) {
if (j - a[i] >= 0) {
dp[j] += dp[j - a[i]];
}
}
}
int maxFrequency = -1;
int mostFrequentSum = -1;
for (int i = 0; i <= sum; i++) {
if (dp[i] >= maxFrequency) {
maxFrequency = dp[i];
mostFrequentSum = i;
}
}
return mostFrequentSum;
}
int main()
{
vector<int> a = {2, 4, 6, 8};
cout << mostCommonSum(a);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtb3N0Q29tbW9uU3VtKGNvbnN0IHZlY3RvcjxpbnQ+JiBhKSB7CiAgaW50IHN1bSA9IDA7CiAgZm9yKGF1dG8gbnVtOiBhKSB7CiAgICBzdW0gKz0gbnVtOwogIH0KICB2ZWN0b3I8aW50PiBkcChzdW0gKyAxKTsKICBkcFswXSA9IDE7CiAgc3VtID0gMDsKICBmb3IgKGludCBpID0gMDsgaSA8IChpbnQpYS5zaXplKCk7IGkrKykgewogICAgc3VtICs9IGFbaV07CiAgICBmb3IoaW50IGogPSBzdW07IGogPj0gMDsgai0tKSB7CiAgICAgIGlmIChqIC0gYVtpXSA+PSAwKSB7CiAgICAgICAgZHBbal0gKz0gZHBbaiAtIGFbaV1dOwogICAgICB9CiAgICB9CiAgfQogIGludCBtYXhGcmVxdWVuY3kgPSAtMTsKICBpbnQgbW9zdEZyZXF1ZW50U3VtID0gLTE7CiAgZm9yIChpbnQgaSA9IDA7IGkgPD0gc3VtOyBpKyspIHsKICAgIGlmIChkcFtpXSA+PSBtYXhGcmVxdWVuY3kpIHsKICAgICAgbWF4RnJlcXVlbmN5ID0gZHBbaV07CiAgICAgIG1vc3RGcmVxdWVudFN1bSA9IGk7CiAgICB9CiAgfQogIHJldHVybiBtb3N0RnJlcXVlbnRTdW07Cn0KCmludCBtYWluKCkKewogIHZlY3RvcjxpbnQ+IGEgPSB7MiwgNCwgNiwgOH07CiAgY291dCA8PCBtb3N0Q29tbW9uU3VtKGEpOwoKICByZXR1cm4gMDsKfQ==