import java.util.Arrays; import java.util.LinkedList; import java.util.Scanner; public class Main { public static long MOD = 1000000007; public static void main(String[] args) { Scanner sc = new Scanner(System.in); final int v0 = sc.nextInt(); final int v1 = sc.nextInt(); final int v2 = sc.nextInt(); final int v3 = sc.nextInt(); final int INF = Integer.MAX_VALUE / 5 - 1; final int MAX = 30; int[] DP = new int[MAX + 1]; int answer = INF; for(int a = 1; a <= MAX; a++){ for(int b = a + 1; b <= MAX; b++){ for(int c = b + 1; c <= MAX; c++){ Arrays.fill(DP, INF); DP[0] = 0; for(int i = 0; i <= MAX - a; i++){ DP[i + a] = Math.min(DP[i + a], DP[i] + 1); } for(int i = 0; i <= MAX - b; i++){ DP[i + b] = Math.min(DP[i + b], DP[i] + 1); } for(int i = 0; i <= MAX - c; i++){ DP[i + c] = Math.min(DP[i + c], DP[i] + 1); } //System.out.println(Arrays.toString(DP)); answer = Math.min(answer, DP[v0] + DP[v1] + DP[v2] + DP[v3]); } } } System.out.println(answer); } }