#include #include #include #include #include #include #include #include #include // require sort next_permutation count __gcd reverse etc. #include // require abs exit atof atoi #include // require scanf printf #include #include // require accumulate #include // require fabs #include #include #include #include // require setw #include // require stringstream #include // require memset #include // require tolower, toupper #include // require freopen #include // require srand #define rep(i,n) for(int i=0;i<(n);i++) #define ALL(A) A.begin(), A.end() #define INF 1<<20 /* No.27 板の準備 全探索、DP? */ using namespace std; typedef long long ll; typedef pair P; const int MAX_N = 35; int dp[MAX_N]; int main() { ios_base::sync_with_stdio(0); vector V(4, 0 ); rep (i, 4 ) cin >> V[i]; int a[3] = {0}; int res = INF; for (a[0] = 1; a[0] < MAX_N; a[0]++ ){ for (a[1] = a[0] + 1; a[1] < MAX_N; a[1]++ ){ for (a[2] = a[1] + 1; a[2] < MAX_N; a[2]++ ){ fill (dp, dp+MAX_N, INF ); dp[0] = 0; rep (k, 3 ) for (int j = a[k]; j < MAX_N; j++ ) dp[j] = min (dp[j], dp[j-a[k]] + 1 ); int curr = 0; rep (i, 4 ) curr += dp[V[i]]; res = min (res, curr ); } // end for } // end for } // end for cout << res << endl; return 0; }