#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; using vi = vector; using vvi = vector; using vl = vector; using vvl = vector; using vb = vector; using vvb = vector; using vd = vector; using vs = vector; using pii = pair; using pll = pair; using pdd = pair; using vpii = vector; using vpll = vector; using vpdd = vector; const int inf = (1 << 30) - 1; const ll INF = 1LL << 60; //const int MOD = 1000000007; const int MOD = 998244353; vi gettbl(int a, int b, int c) { vvi dp(4, vi(31, inf)); vi l = { a,b,c }; dp[0][0] = 0; for (int i = 1; i <= 3; i++) { for (int j = 0; j <= 30; j++) { dp[i][j] = dp[i - 1][j]; if (j >= l[i - 1]) dp[i][j] = min(dp[i][j], dp[i][j - l[i - 1]] + 1); } } return dp[3]; } int main() { vi v(4); for (int i = 0; i < 4; i++) { cin >> v[i]; } int ans = inf; for (int i = 1; i <= 28; i++) { for (int j = i + 1; j <= 29; j++) { for (int k = j + 1; k <= 30; k++) { vi tbl = gettbl(i, j, k); int cnt = 0; bool ok = true; for (int l = 0; l < 4; l++) { if (tbl[v[l]] == inf) { ok = false; break; } cnt += tbl[v[l]]; } if (ok) { ans = min(ans, cnt); } } } } cout << ans << endl; return 0; }