#include<iostream>
using namespace std;
class PlatypusDuckAndBeaver{
public:
int minimumAnimals(int webbedFeet, int duckBills, int beaverTails){
return webbedFeet/2-beaverTails;
}
};
#include<iostream>
#include<stack>
#include<vector>
#include<algorithm>
using namespace std;
typedef long long ll;
class Suminator{
public:
int suminator(vector <int> program, int pos, int val) {
stack<ll> stk;
program[pos] = val;
int ps = program.size();
for(int i = 0; i < ps; i++) {
if(program[i] != 0) {
stk.push(program[i]);
}
else {
ll sum = 0;
for(int j = 0; j < 2 && !stk.empty(); j++) {
sum += stk.top();
stk.pop();
}
stk.push(sum);
}
}
return stk.top();
}
int findMissing(vector <int> program, int wantedResult){
int pos = find(program.begin(), program.end(), -1) - program.begin();
if(suminator(program, pos, 0) == wantedResult) {
return 0;
}
ll res = suminator(program, pos, 0);
ll ans = wantedResult - res;
if(ans <= 0)
return -1;
int temp = suminator(program, pos, ans);
if(temp = wantedResult)
return ans;
else
return -1;
}
};
#include<iostream>
#include<algorithm>
#include<vector>
#include<functional>
using namespace std;
class SafeRemoval {
public:
int removeThem(vector <int> seq, int k) {
int f[55][55][55][55];
int a[4][55];
int b[4][55];
int i;
int n = seq.size();
sort(seq.begin(),seq.end(),greater <int> ());
for( i = 0; i < 3; i++) {
a[i][0] = b[i][0] =0;
}
for( i = 0; i < n; i++) {
int mod = seq[i] % 4;
a[mod][++a[mod][0]] = seq[i];
b[mod][a[mod][0]] = seq[i] + b[mod][a[mod][0] - 1];
}
for(int i0 = 0; i <= a[i0][0]; i++)
for(int i1 = 0; i <=a[1][0]; i++)
for(int i2 = 0; i <=a[2][0]; i++)
for(int i3 = 0; i <=a[3][0]; i++){
if(i0 + i1 + i2 + i3 >= n - k) {
if(i0 + i1 + i2 + i3 == n - k) {
f[i0][i1][i2][i3] = b[0][i0] + b[1][i1] + b[2][i2] + b[3][i3];
if ((f[i0][i1][i2][i3] % 4) == 0)
f[i0][i1][i2][i3] = -1;
}
else {
f[i0][i1][i2][i3] = -1;
if (((b[0][i0] + b[1][i1] + b[2][i2] + b[3][i3]) % 4) != 0) {
if (i0 > 0 && f[i0][i1][i2][i3] < f[i0 - 1][i1][i2][i3]) f[i0][i1][i2][i3] = f[i0 - 1][i1][i2][i3];
if (i1 > 0 && f[i0][i1][i2][i3] < f[i0][i1 - 1][i2][i3]) f[i0][i1][i2][i3] = f[i0][i1 - 1][i2][i3];
if (i2 > 0 && f[i0][i1][i2][i3] < f[i0][i1][i2 - 1][i3]) f[i0][i1][i2][i3] = f[i0][i1][i2 - 1][i3];
if (i3 > 0 && f[i0][i1][i2][i3] < f[i0][i1][i2][i3 - 1]) f[i0][i1][i2][i3] = f[i0][i1][i2][i3 - 1];
}
}
}
}
return f[ a[0][0] ][ a[1][0] ][ a[2][0] ][ a[3][0] ];
}
};