#include <bits/stdc++.h>

using namespace std;

#define int long long
const int INF = 1e12;
typedef long long ll;
typedef long double ld;
vector<string> ans;
vector<pair<int, int>> cur;
vector<vector<int>> pr;
vector<vector<int>> dp;
    vector<int> sm;


void restore_ans(int i, int j, const string &s) {
    if (i == -1 || j == -1 || j < i) return;
    if (i == j) {
        ans[cur[i].second] = s;
        return;
    }
    int k = pr[i][j];
    //cerr << i << " " << j << " " << k << '\n';
    if (dp[i][j] == (sm[k + 1] - sm[i]) + dp[i][k] + dp[k + 1][j] + 2 * (sm[j + 1] - sm[k + 1])) {
        //cerr << " 1 ";
        restore_ans(i, k, s + '.');
        restore_ans(k + 1, j, s + '-');
    } else {
        restore_ans(i, k, s + '-');
        restore_ans(k + 1, j, s + '.');
    }

}
void solve() {
    int n;
    cin >> n;
    vector<int> lst(n);
    for (int i =0; i < n; i++) {
        string s;
        cin >> s;
        lst[i] = (s[0] - '0') * 10000 + (s[2] - '0') * 1000 + (s[3] - '0') * 100 + (s[4] - '0') * 10 + (s[5] - '0');

        cur.push_back({lst[i], i});
    }
    pr.assign(n, vector<int>(n, -1));
    dp.assign(n, vector<int>(n, INF));
    sort(cur.begin(), cur.end());
    ans.assign(n, "");
    for (int i =0; i < n; i++) {
        dp[i][i] = 0;
    }
    sm.assign(n + 1, 0);
    for (int i = 1; i <=n; i++) {
        sm[i] = sm[i - 1] + cur[i - 1].first;
    }
    for (int ln = 2; ln <= n; ln++) {
        for (int i =0;i < n; i++) {
            int j = i + ln - 1;
            if (j >= n) break;
            for (int k = i; k < j; k++) {
                if (dp[i][j] > (sm[k + 1] - sm[i]) + dp[i][k] + dp[k + 1][j] + 2 * (sm[j + 1] - sm[k + 1])) {
                    dp[i][j] = (sm[k + 1] - sm[i]) + dp[i][k] + dp[k + 1][j] + 2 * (sm[j + 1] - sm[k + 1]);
                    pr[i][j] = k;
                }
                if (dp[i][j] > 2 * (sm[k + 1] - sm[i]) + dp[i][k] + dp[k + 1][j] + (sm[j + 1] - sm[k + 1])) {
                    dp[i][j] = 2 * (sm[k + 1] - sm[i]) + dp[i][k] + dp[k + 1][j] + (sm[j + 1] - sm[k + 1]);
                    pr[i][j] = k;
                }
            }
        }
    }
    restore_ans(0, n-1, "");
    for (int i = 0; i < n; i++) {
        cout << ans[i] << '\n';
    }
}

signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
#ifdef LC
    freopen("/home/team11/CLionProjects/contest/input.txt", "r", stdin);
    freopen("/home/team11/CLionProjects/contest/output.txt", "w", stdout);

#endif
    int t= 1 ;
    //cin >> t;
    for (int tt =0; tt <t; tt++) {
        solve();
    }
    return 0;
}