#include typedef long long ll; typedef unsigned long long ull; #define FOR(i,a,b) for(int (i)=(a);i<(b);i++) #define REP(i,n) FOR(i,0,n) #define RANGE(vec) (vec).begin(),(vec).end() using namespace std; class PreparePlate { public: void solve(void) { vector v(4); REP(i, 4) cin>>v[i]; sort(RANGE(v)); const ll inf = (1<<30); // 30*29*28 = 24360 なんで // 全探索でいけそう ll minN = inf; for (int a = 1; a <= 30; ++a) for (int b = a+1; b <= 30; ++b) for (int c = b+1; c <= 30; ++c) { vector dp(30+1, inf); dp[0] = 0; for (int i = 1; i <= 30; ++i) { int x[] = {a,b,c}; REP(j, 3) if (i >= x[j]) dp[i] = min(dp[i], dp[i-x[j]]+1); } ll n = 0; REP(i,4) n = min(n+dp[v[i]], inf); minN = min(n, minN); } cout<solve(); delete obj; return 0; } #endif