#include #include using namespace std; int N, total; int A[50]; int memo[50][100001]; bool dfs(int idx, int v) { if (v > total) { return false; } if (idx == N) { if (v == total) { return true; } else { return false; } } if (memo[idx][v] != 0) { return memo[idx][v] == 1; } if (dfs(idx + 1, v + A[idx])) { memo[idx][v] = 1; return true; } if (dfs(idx + 1, v * A[idx])) { memo[idx][v] = 1; return true; } memo[idx][v] = -1; return false; } int main() { cin >> N >> total; for (int i = 0; i < N; i++) { cin >> A[i]; } string res; int v = A[0]; for (int i = 1; i < N; i++) { if (dfs(i + 1, v + A[i])) { res += "+"; v += A[i]; } else if (dfs(i + 1, v * A[i])) { res += "*"; v *= A[i]; } } cout << res << endl; return 0; }