#include <cstdio>
#include <algorithm>
using namespace std;

char mark[4] = "+-*";

int oper(int cmd, int lhs, int rhs){
    switch(cmd){
        case 0: return lhs + rhs;
        case 1: return lhs - rhs;
        case 2: return lhs * rhs;
    }
    return 0;
}

int main(){
    int n[4];
    bool success;
    while( true ){
        success = false;
        scanf("%d %d %d %d", n, n+1, n+2, n+3);
        if( n[0] + n[1] + n[2] + n[3] == 0) break;
        sort(n, n + 4);
        int i, j, k;
        do{
            for(i = 0; !success && i < 3; i++){
                int t1 = oper(i, n[0], n[1]);
                for(j = 0; !success && j < 3; j++){
                    int t2 = oper(j, t1, n[2]);
                    for(k = 0; !success && k < 3; k++){
                        int res = oper(k, t2, n[3]);
                        if( res == 10 ){
                            success = true;
                            break;
                        }
                    }
                }
            }
        }while( !success && next_permutation(n, n + 4) );
        if( success ){
            char str1[12], str2[24], str3[32];
            i--; j--;
            sprintf(str1, "(%d %c %d)", n[0], mark[i], n[1]);
            sprintf(str2, "(%s %c %d)", str1, mark[j], n[2]);
            sprintf(str3, "(%s %c %d)", str2, mark[k], n[3]);
            printf("%s\n", str3);
            continue;
        }
        do{
            for(i = 0; !success && i < 3; i++){
                int t1 = oper(i, n[0], n[1]);
                for(j = 0; !success && j < 3; j++){
                    int t2 = oper(j, n[2], n[3]);
                    for(k = 0; !success && k < 3; k++){
                        int res = oper(k, t1, t2);
                        if( res == 10 ){
                            success = true;
                            break;
                        }
                    }
                }
            }
        }while( !success && next_permutation(n, n + 4) );
        if( success ){
            i--; j--;
            char str1[8], str2[16], str3[24];
            sprintf(str1, "(%d %c %d)", n[0], mark[i], n[1]);
            sprintf(str2, "(%d %c %d)", n[2], mark[j], n[3]);
            sprintf(str3, "(%s %c %s)", str1, mark[k], str2);
            printf("%s\n", str3);
            continue;
        }
        do{
            for(i = 0; !success && i < 3; i++){
                int t1 = oper(i, n[1], n[2]);
                for(j = 0; !success && j < 3; j++){
                    int t2 = oper(j, t1, n[3]);
                    for(k = 0; !success && k < 3; k++){
                        int res = oper(k, n[0], t2);
                        if( res == 10 ){
                            success = true;
                            break;
                        }
                    }
                }
            }
        }while( !success && next_permutation(n, n + 4) );
        if( success ){
            char str1[8], str2[16], str3[24];
            sprintf(str1, "(%d %c %d)", n[1], mark[i], n[2]);
            sprintf(str2, "(%s %c %d)", str1, mark[j], n[3]);
            sprintf(str3, "(%d %c %s)", n[0], mark[k], str2);
            printf("%s\n", str3);
            continue;
        }
        puts("0");
    }
    return 0;
}

Measured memory_bytes: 1064