#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define endl '\n' #define all(v) (v).begin(), (v).end() #define uniq(v) (v).erase(unique((v).begin(), (v).end()), (v).end()) typedef long long ll; typedef pair P; typedef unsigned int uint; const int inf = 1000000009; int n, t; int as[51]; char res[51]; set

memo; bool dfs(int k, int num) { if (memo.count(P(k, num)) > 0) return false; if (k == n) { return num == t; } else { if (num + as[k] <= t && dfs(k+1, num+as[k])){ res[k-1] = '+'; return true; } if (num * as[k] <= t && dfs(k+1, num*as[k])) { res[k-1] = '*'; return true; } memo.insert(P(k, num)); return false; } } int main() { scanf("%d%d", &n, &t); for (int i = 0; i < n; i++) scanf("%d", &as[i]); dfs(1, as[0]); for (int i = 0; i < n-1; i++) printf("%c", res[i]); printf("\n"); }