1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <stdio.h>
#include <string.h>

char result[10000];
char *pr;

const char* a[] = { "0"
    , "1", "1+1", "1+1+1", "1+1+1+1", "1+1+1+1+1"
    , "(1+1)*(1+1+1)", "(1+1)*(1+1+1)+1",  "(1+1)*(1+1)*(1+1)", "(1+1+1)*(1+1+1)", "(1+1+1)*(1+1+1)+1"
    , "(1+1+1)*(1+1+1)+1+1", "(1+1)*(1+1)*(1+1+1)", "(1+1)*(1+1)*(1+1+1)+1", "((1+1)*(1+1+1)+1)*(1+1)",  "((1+1)*(1+1)+1)*(1+1+1)"
    , "(1+1)*(1+1)*(1+1)*(1+1)", "(1+1)*(1+1)*(1+1)*(1+1)+1", "(1+1)*(1+1+1)*(1+1+1)", "(1+1)*(1+1+1)*(1+1+1)+1", "((1+1+1)*(1+1+1)+1)*(1+1)"
    , "((1+1)*(1+1+1)+1)*(1+1+1)", "((1+1)*(1+1+1)+1)*(1+1+1)+1", "((1+1)*(1+1+1)+1)*(1+1+1)+1+1"
    , "(1+1)*(1+1)*(1+1)*(1+1+1)", "(1+1)*(1+1)*(1+1)*(1+1+1)+1", "((1+1)*(1+1)*(1+1+1)+1)*(1+1)"
    , "(1+1+1)*(1+1+1)*(1+1+1)", "(1+1+1)*(1+1+1)*(1+1+1)+1", "(1+1+1)*(1+1+1)*(1+1+1)+1+1"
    , "((1+1+1)*(1+1+1)+1)*(1+1+1)", "((1+1+1)*(1+1+1)+1)*(1+1+1)+1", "(1+1)*(1+1)*(1+1)*(1+1)*(1+1)"
};
 

void calc(unsigned int n)
{
        if (n == 1) {
                *pr++ = '1';
                return;
        }
        if (n <= 32) {
                *pr++ = '(';
                pr = stpcpy( pr, a[n] );
                *pr++ = ')';
                return;
        }

        if (n % 2 == 0) {
                *pr++ = '(';
                pr = stpcpy( pr, a[2] );
                *pr++ = ')';
                *pr++ = '*';
                calc(n/2);
                return;
        }
        if (n % 3 == 0) {
                *pr++ = '(';
                pr = stpcpy( pr, a[3] );
                *pr++ = ')';
                *pr++ = '*';
                calc(n/3);
                return;
        }

        if (n % 5 == 0) {
                *pr++ = '(';
                pr = stpcpy( pr, a[5] );
                *pr++ = ')';
                *pr++ = '*';
                calc(n/5);
                return;
        }
        *pr++ = '(';
        *pr++ = '1';
        *pr++ = '+';
        calc(n-1);
        *pr++ = ')';
}

int main()
{
        int t, i;
        unsigned int k;

        scanf("%d\n", &t);
        for(i = 0; i < t; ++i) {
                pr = result;
                scanf("%u\n", &k);
                calc(k);
                *pr = '\0';
                printf("%s\n", result);
        }

        return 0;

}