#include <iostream> #include <queue> #include <utility> #include <vector> #include <string> #include <functional> using namespace std; using pd = pair<double,int>; int main(){ int n; cin >> n; priority_queue<pd, vector<pd>, greater<pd>> pq; for(int i = 0; i < n; ++i){ double d; cin >> d; pq.push({d,i}); } vector<vector<int>> children(n); while(pq.size() > 1){ auto [a,x] = pq.top(); pq.pop(); auto [b,y] = pq.top(); pq.pop(); pq.push({a+b, children.size()}); children.push_back({x,y}); } string s; vector<string> ans(n); string cc = "-.aaa"; function<void(int)> dfs = [&](int nd){ if(nd < n){ ans[nd] = s; } for(int i = 0; i < children[nd].size(); ++i){ s.push_back(cc[i]); dfs(children[nd][i]); } if(!s.empty()) s.pop_back(); }; auto [a,b] = pq.top(); dfs(b); for(auto x: ans)cout << x << endl; }