#include <iostream>
#include <stack>
#include <vector>
using namespace std;
stack<int> S,tmp;
vector<char> V;
bool findStack(int x)
{
for(int i=0;i<tmp.size();i++)
{
int t = tmp.top();
tmp.pop();
if(t == x){
return true;
}
}
return false;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int N,input,max,flag=0;
cin >> N;
max = 0;
for(int i=0;i<N;i++)
{
cin >> input;
if(input >= max)
{
for(int j=max+1;j<=input;j++)
{
S.push(j);
V.push_back('+');
}
max = input;
S.pop();
V.push_back('-');
}else if(input < max)
{
tmp = S;
if(findStack(input))
{
for(int j=0;j<S.size();j++)
{
int t = S.top();
S.pop();
V.push_back('-');
if(t == input)
break;
}
}else{
flag = 1;
}
}
}
if(flag)
cout << "NO";
else
{
for(auto a : V)
cout << a << '\n';
}
}