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
#include <cstdio>
#include <vector>
#include <algorithm>
#include <cmath>

using namespace std;

char ost='.';

void rozklad(int n){
	//char c;
	//scanf("%c %c", &c, &c);
	if(n<=5){
		if(ost==')') printf("*");
		if(n>1) printf("(");
		for(int i=0;i<n;i++){
			if(i>0) printf("+");
			printf("1");
		}
		if(n>1) { 
			printf(")"); 
			ost=')';
		}
		return;
	}
	else{
		bool nic=false;
		for(int i=2; i<=sqrt(n); i++){
			if(n%i==0){
				n/=i;
				rozklad(i);
				nic=true;	
			}
		}
		if(nic && n>1){
			rozklad(n);
		}
		else if(!nic){
			if(ost==')') printf("*");
			printf("((");
			ost='(';
			rozklad(n-1);
			printf(")+1)");
			ost=')';
		}
	}

}

int main(){
	int liczba,ile;
	scanf("%d", &ile);
	for(int j=0; j<ile; j++){
		scanf("%d",&liczba);
		ost='.';
		rozklad(liczba);
		printf("\n");
	}
		
	return 0;

}