#include #include using namespace std; class range {private: struct I{int x;int operator*(){return x;}bool operator!=(I& lhs){return x v(4); for(int i : range(4)) { scanf("%d", &v[i]); } int res = inf; for(int a : range(1, N)) { for(int b : range(a+1, N)) { for(int c : range(b+1, N)) { vector dp(N, inf); for(int x : range(N)) { if(x % a == 0) { dp[x] = min(dp[x], x / a); } if(x % b == 0) { dp[x] = min(dp[x], x / b); } if(x % c == 0) { dp[x] = min(dp[x], x / c); } for(int n : range(N)) { for(int p : range(n)) { dp[n] = min(dp[n], dp[p] + dp[n-p]); } } int tmp = 0; for(int i : range(4)) { tmp += dp[v[i]]; } res = min(res, tmp); } } } } printf("%d\n", res); return 0; }