#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

const ll INF = 1e12;

string normal_solve(int n, vector<int> a) {
    ll prod = 1;
    for (int x : a) {
        prod *= (ll)x;
        if (prod >= INF) break;
    }
    if (prod >= INF) {
        string res = "";
        for (int i = 0; i < n; ++i) {
            if (i != 0) res.push_back('*');
            res.push_back('0' + a[i]);
        }
        return res;
    }
    vector<ll> pref(n + 1, 1);
    for (int i = 0; i < n; ++i) pref[i + 1] = pref[i] * a[i];
    vector<ll> dp(n + 1, 0);
    vector<int> go(n + 1, -1);
    dp[0] = 0;
    vector<int> last;
    for (int i = 0; i < n; ++i) {
        if (a[i] != 1) last.push_back(i);
        if (a[i] == 1) last.push_back(i);
        for (int j : last) {
            if (dp[j] + pref[i + 1] / pref[j] > dp[i + 1]) {
                dp[i + 1] = dp[j] + pref[i + 1] / pref[j];
                go[i + 1] = j;
            }
        }
        if (a[i] == 1) last.pop_back();
    }
    vector<pair<int, int>> segs;
    int cur = n;
    while (cur != 0) {
        segs.push_back({go[cur], cur});
        cur = go[cur];
    }
    reverse(segs.begin(), segs.end());
    string signs = "";
    for (int i = 0; i < segs.size(); ++i) {
        for (int j = 0; j < segs[i].second - segs[i].first - 1; ++j) signs.push_back('*');
        if (i + 1 != segs.size()) signs.push_back('+');
    }
    string res = "";
    for (int i = 0; i < n; ++i) {
        if (i != 0) res.push_back(signs[i - 1]);
        res.push_back('0' + a[i]);
    }
    return res;
}

string solve(int n, vector<int> a) {
    if (count(a.begin(), a.end(), 1) == a.size()) {
        string res = "";
        for (int i = 0; i < n; ++i) {
            if (i != 0) res.push_back('+');
            res.push_back('0' + a[i]);
        }
        return res;
    }
    int cnt_left = 0;
    while (a[cnt_left] == 1) ++cnt_left;
    int cnt_right = 0;
    while (a[n - cnt_right - 1] == 1) ++cnt_right;
    vector<int> A;
    for (int i = cnt_left; i < n - cnt_right; ++i) A.push_back(a[i]);
    a = A;
    string res = "";
    for (int i = 0; i < cnt_left; ++i) {
        res.push_back('0' + 1);
        res.push_back('+');
    }
    res += normal_solve(n - cnt_left - cnt_right, a);
    for (int i = 0; i < cnt_right; ++i) {
        res.push_back('+');
        res.push_back('0' + 1);
    }
    return res;
}

void append(string &ans, string str) {
    if (!ans.empty()) ans.push_back('+');
    ans += str;
}

int main() {
#ifdef LOCAL
    freopen("input.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n;
    cin >> n;
    vector<int> a(n);
    for (int i = 0; i < n; ++i) cin >> a[i];
    string s;
    cin >> s;
    if (s.size() == 1) {
        for (int i = 0; i < n; ++i) {
            if (i != 0) cout << s[0];
            cout << a[i];
        }
        return 0;
    }
    if (s == "+-" || s == "-+") {
        for (int i = 0; i < n; ++i) {
            if (i != 0) cout << "+";
            cout << a[i];
        }
        return 0;
    }
    if (s == "-*" || s == "*-") {
        bool zero = false;
        for (int i = 0; i < n; ++i) zero |= a[i] == 0;
        if (zero) {
            int pos_zero = 0;
            while (a[pos_zero] != 0) ++pos_zero;
            if (pos_zero == 0) {
                for (int i = 0; i < n; ++i) {
                    if (i != 0) cout << "*";
                    cout << a[i];
                }
            } else {
                for (int i = 0; i < pos_zero; ++i) {
                    if (i != 0) cout << "*";
                    cout << a[i];
                }
                cout << "-";
                for (int i = pos_zero; i < n; ++i) {
                    if (i != pos_zero) cout << "*";
                    cout << a[i];
                }
            }
        } else {
            for (int i = 0; i < n; ++i) {
                if (i != 0) cout << "*";
                cout << a[i];
            }
        }
        return 0;
    }
    string ans = "";
    vector<int> cur;
    for (int i = 0; i < n; ++i) {
        if (a[i] == 0) {
            if (!cur.empty()) {
                append(ans, solve(cur.size(), cur));
                cur.clear();
            }
            append(ans, "0");
        } else cur.push_back(a[i]);
    }
    if (!cur.empty()) append(ans, solve(cur.size(), cur));
    cout << ans;
    return 0;
}
