from itertools import combinations a, b, c, d = map(int, input().split()) INF = 10**18 ans = INF for C in combinations(range(1, 31), 3): x, y, z = C DP = [INF for _ in range(31)] for i in range(30 // x + 1): for j in range(30 // y + 1): if x * i + y * j > 30: break for k in range(30 // z + 1): if x * i + y * j + z * k > 30: break res = x * i + y * j + z * k DP[res] = min(DP[res], i + j + k) if DP[a] == INF or DP[b] == INF or DP[c] == INF or DP[d] == INF: continue ans = min(ans, DP[a] + DP[b] + DP[c] + DP[d]) print(ans)