#include "bits/stdc++.h" using namespace std; #define int long long #define ld long double #define ll long long #define st first #define nd second #define pb push_back #define eb emplace_back #define sz(x) (int)(x).size() #define all(x) begin(x),end(x) #define FOR(i,l,r) for(int i = (l); i <= (r); i++) #define ROF(i,r,l) for (int i = (r); i >= (l); i--) auto& operator<<(auto&o, pair<auto,auto>p) { return o << "(" << p.st << ", " << p.nd << ")"; } auto operator<<(auto&o, auto x)->decltype(end(x), o) { o << "{"; int i =0; for (auto e : x) o << ","+!i++ << e; return o << "}"; } #ifdef LOCAL #define debug(x...) cerr << "[" #x "]: ", [](auto...$) { \ ((cerr << $ << "; "), ...) << endl; }(x) #else #define debug() {} #endif #define rep(i, a, b) for (int i = (a); i < (b); i++) using pii = pair<int, int>; using vi = vector<int>; const int inf = 1e9 + 7; const int N = 1000 + 7; vector<int> adj[N]; string word; string ans[N]; void dfs(int u) { if (adj[u].empty()) { ans[u] = word; return; } rep(i, 0, sz(adj[u])) { if (i == 0) { word += '-'; } else { word += '.'; } dfs(adj[u][i]); word.pop_back(); } } signed main() { cin.tie(0)->sync_with_stdio(0); int n; cin >> n; vector<ld> f(n); rep(i, 0, n) cin >> f[i]; set<pair<ld, int>> S; rep(i, 0, n) { S.emplace(f[i], i); } int nxt = n; while (S.size() > 1) { auto [a, u] = *S.begin(); S.erase(S.begin()); auto [b, v] = *S.begin(); S.erase(S.begin()); adj[nxt].pb(u); adj[nxt].pb(v); S.emplace(a + b, nxt); nxt++; } dfs(nxt - 1); rep(i, 0, n) cout << ans[i] << '\n'; return 0; }