#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; }