#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair i_i; typedef pair ll_i; typedef pair d_i; typedef pair ll_ll; typedef pair d_d; struct edge { int u, v; ll w; }; ll MOD = 1000000007; ll _MOD = 1000000009; double EPS = 1e-10; int main() { int N, x; cin >> N >> x; vector A(N); for (int i = 0; i < N; i++) cin >> A[i]; vector< vector > dp(N + 1, vector(100001)); dp[N][x] = 3; for (int i = N - 1; i >= 0; i--) for (int j = 0; j <= 100000; j++) { if (j + A[i] <= 100000 && dp[i + 1][j + A[i]]) dp[i][j] += 1; if ((ll)j * A[i] <= 100000 && dp[i + 1][j * A[i]]) dp[i][j] += 2; } int j = A[0]; for (int i = 1; i < N; i++) if (dp[i][j] % 2) { cout << '+'; j += A[i]; } else { cout << '*'; j *= A[i]; } cout << endl; }