import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
// while (in.hasNextInt()) { // 注意 while 处理多个 case
// int a = in.nextInt();
// int b = in.nextInt();
// System.out.println(a + b);
// }
int[] arr = new int[4];
// int[] visited = new int[4];
boolean[] visited = new boolean[4];
for (int i = 0; i < 4; i++) {
arr[i] = in.nextInt();
}
boolean flag = false;
for (int i = 0; i < 4; i++) {
visited[i] = true;
if (dfs(arr, visited, arr[i])) {
flag = true;
break;
}
}
System.out.print(flag);
}
private static boolean dfs(int[] nums, boolean[] visited, int result) {
for (int i = 0; i < 4; i++) {
if (!visited[i]) {
visited[i] = true;
if (dfs(nums, visited, result + nums[i])
|| dfs(nums, visited, result - nums[i])
|| dfs(nums, visited, result * nums[i])
|| (result % nums[i] == 0 && dfs(nums, visited, result / nums[i]))) {
return true;
}
visited[i] = false;
}
}
if (result == 24) {
return true;
}
return false;
}
// public static boolean dfs(int[] nums, int[] visit, int temp) {
// for (int i = 0; i < nums.length; i++) {
// if (visit[i] == 0) { // 如果是未使用的数字
// visit[i] = 1; // 标记为已使用
// if (dfs(nums, visit, temp + nums[i]) // 递归判断
// || dfs(nums, visit, temp - nums[i])
// || dfs(nums, visit, temp * nums[i])
// || (temp % nums[i] == 0 && dfs(nums, visit, temp / nums[i]))) {
// // 如果存在满足条件的,终止循环
// return true;
// }
// // 不存在满足条件的,说明当前的数字顺序不符要求,进行回溯,把标记重置为0
// visit[i] = 0;
// }
// }
// // 数字都已使用且结果为24,返回真
// if (temp == 24) {
// return true;
// }
// // 不存在24,返回假
// return false;
// }
}