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

#define all(x) ::begin(x), ::end(x)
#define tsolve int t; cin >> t; while (t--) solve
#define sz(x) (int)::size(x)
using ll = long long;
using ld = long double;

constexpr int N = 202;
constexpr int inf = 1e9;

int dp[N][N][N], bestK[N][N][N];

void solve() {
    int n;
    cin >> n;
    vector<int> f(n);
    vector<int> ord(n);
    for(int i = 0; i < n; i++){
        double x;
        cin >> x;
        f[i] = (int)round(x * 1e4);
    }
    iota(all(ord), 0);
    sort(all(ord), [&](int i, int j){return f[i] < f[j];});
    sort(all(f));
    vector<int> s(n+1);
    for(int i = 0; i < n; i++){
        s[i+1] = s[i] + f[i];
    }
    for(int i = 1; i <= n; i++){
        dp[i][0][0] = inf;
        for(int a = 0; a <= n; a++){
            for(int b = 0; b <= n; b++){
                if(a+b > n) dp[i][a][b] = inf;
            }
        }
        for(int sum = n; sum >= 1; sum--){
            for(int a = sum; a >= 0; a--){
                int b = sum-a;
                int best = inf;
                int optK = -1;
                for(int k = 0; k <= min(a, i); k++){
                    if(dp[i-k][b+a-k][a-k] < best){
                        optK = k;
                        best = dp[i-k][b+a-k][a-k];
                    }
                }
                bestK[i][a][b] = optK;
                dp[i][a][b] = best + s[i];
                // cerr << a << " " << b << " " << i << " " << dp[a][b][i] << "\n";
            }
        }
    }
    vector<int> layers;
    {
        int i = n, a = 1, b = 1;
        while(i > 0){
            int k = bestK[i][a][b];
            layers.push_back(k);
            i -= k;
            int a2 = b+a-k, b2 = a-k;
            a = a2, b = b2;
        }
    }
    vector<string> ans(n);
    vector<string> s1, s2;
    s1.push_back(".");
    s2.push_back("-");
    int p = n;
    for(int k : layers){
        for(int i = p-k; i < p; i++){
            ans[ord[i]] = s1.back();
            s1.pop_back();
        }
        p -= k;
        vector<string> t1, t2;
        t1 = s2;
        for(string s : s1){
            string a = s, b = s;
            a.push_back('.');
            b.push_back('-');
            t1.push_back(a);
            t2.push_back(b);
        }
        s1 = t1, s2 = t2;
    }
    for(string s : ans){
        cout << s << "\n";
    }
    // cout << dp[n][1][1] << "\n";
}

int main() {
    cout.tie(0)->sync_with_stdio(false);
    cout << setprecision(16);
    solve();
}