#include<stdio.h>
#include<string.h>
float num[4] ;
int his[4] = { 0 };
int v[4]={0};
float b[4]={0};
int ans;
float sum;
int flag=0;
int dfs(int x, float sum)
{
    if (x == 3)
    {
        if (sum == 24.0)
        {
            return 1;
        }
        else { return 0; }
    }
    int tx;
    tx = x + 1;
    if (tx >= 0 && tx <= 3 && his[tx] == 0)
    {
        his[tx] = 1;
        //sum += b[tx];
        if (dfs(tx, sum+b[tx])||dfs(tx, sum-b[tx])||dfs(tx, sum*b[tx])||dfs(tx, sum/b[tx]))
        {
            return 1;
        }
        else { his[tx] = 0; }
    }
    return 0;
}

void dfs2(int i)
{
    if(i>=4)
    {
        ans++;
        sum=b[0];
        his[0]=1;
        if(dfs(0,sum)==1){
            flag=1;
            //printf("%f %f %f %f",b[0],b[1],b[2],b[3]);
        }
        return;
    }
    for(int k=0;k<4;k++)
    {
        if(k>0&&num[k]==num[k-1]&&v[k-1]==0){continue;}
        if(v[k]==0)
        {
            v[k]=1;
            b[i]=num[k];
            dfs2(i+1);
            v[k]=0;
        }
    }
    return;
}
int main(void)
{
    for (int i = 0; i < 4; i++)
    {
        scanf("%f", &num[i]);
    }//输入完成
    //求全排列
    //先冒泡排序,为的是将相同元素移动到相邻位置,便于后续去重
    for(int i=0;i<4;i++)
    {
        for(int j=0;j<4-1-i;j++)
        {
            if(num[j]>num[j+1])
            {
                float temp;
                temp=num[j+1];
                num[j+1]=num[j];
                num[j]=temp;
            }
        }
    }
    dfs2(0);
    if(flag==0){printf("false");}
    else{printf("true");}
   // float test=5.0/2.0;
   //printf("%f",test);
    return 0;
}