#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath> 
using namespace std;
vector<double> a(4);
bool flag = false; // 标记是否找到解法
// DFS:枚举所有运算组合和顺序,aa是当前待运算的数字集合
void dfs(vector<double>& aa) {
    if (flag) return; // 已经找到解法,直接返回(剪枝,提高效率)
    if (aa.size() == 1) {
        // 浮点数精度判断:结果在24的±1e-6范围内,视为等于24
        if (fabs(aa[0] - 24) < 1e-6) {
            flag = true;
        }
        return;
    }
    // 枚举所有两个不同数字的组合(i和j)
    for (int i = 0; i < aa.size(); ++i) {
        for (int j = 0; j < aa.size(); ++j) {
            if (i == j) continue; // 不能选同一个数字
            // 收集剩余数字(排除i和j对应的数字)
            vector<double> bb;
            for (int k = 0; k < aa.size(); ++k) {
                if (k != i && k != j) {
                    bb.push_back(aa[k]);
                }
            }
            // 1. 尝试 aa[i] - aa[j]
            bb.push_back(aa[i] - aa[j]);
            dfs(bb);
            bb.pop_back(); // 回溯
            // 2. 尝试 aa[i] + aa[j]
            bb.push_back(aa[i] + aa[j]);
            dfs(bb);
            bb.pop_back(); // 回溯
            // 3. 尝试 aa[i] * aa[j]
            bb.push_back(aa[i] * aa[j]);
            dfs(bb);
            bb.pop_back(); // 回溯
            // 4. 尝试 aa[i] / aa[j](处理除数为0的情况)
            if (fabs(aa[j]) > 1e-9) { // 除数不为0才运算
                bb.push_back(aa[i] / aa[j]);
                dfs(bb);
                bb.pop_back(); // 回溯
            }
        }
    }
}

int main() {
    cin >> a[0] >> a[1] >> a[2] >> a[3];
    flag = false;
    dfs(a);
    if (flag) {
        cout << "true" << endl;
    } else {
        cout << "false" << endl;
    }
    return 0;
}