#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; bool checked[51][100010]; int N; int T; int A[51]; vector ans; void dfs(int i, int sum, vector &operators) { // fprintf(stderr, "i: %d, sum: %d, %d\n", i, sum, (int) operators.size()); if (sum > T) return; if (checked[i][sum]) return; if (ans.size() > 0) return; if (i == N) { if (sum == T) { assert(operators.size() == N - 1); ans = operators; } return; } operators.push_back('+'); dfs(i + 1, sum + A[i], operators); operators.pop_back(); operators.push_back('*'); dfs(i + 1, sum * A[i], operators); operators.pop_back(); checked[i][sum] = true; } int main() { cin >> N; cin >> T; for (int i = 0; i < N; ++i) { cin >> A[i]; } memset(checked, false, sizeof(checked)); vector operators; dfs(1, A[0], operators); string res = ""; for (char op : ans) { res += op; } cout << res << endl; return 0; }