import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Scanner;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); // 첫 줄에 주어진 N
int []su = new int[N]; // 두번재 입력값 부터는 1이상 n 이하의 정수
for (int i = 0; i <N; i++) {
su[i] = sc.nextInt(); // 정수값을 입력 받음
}
StringBuffer bf = new StringBuffer();
Stack<Integer> stack = new Stack<>();
int num = 1;
Boolean r = true;
for (int i =0; i<su.length; i ++ ) {
int eachSu = su[i]; //현재 숫자
if (eachSu >= num) { //현재 숫자가 num 이상인 경우 수행
while (eachSu >=num) { //현재 숫자가 num이상일때까지
stack.push(num++); //스택에 num을 밀어넣고 ++ 처리
bf.append("+\n"); //+ 글자를 출력
}
stack.pop(); //다 되었으면 pop으로 빼고 - 입력
bf.append("-\n");
} else { //현재 숫자가 num 이하라면
int n = stack.pop(); //스택에서 숫자를 꺼내고
if (n > eachSu) { //꺼낸 숫자와 타켓 숫자를 비교하는데
// 스택에서 꺼낸 숫자보다 목표 숫자가 크면 수열을 만들 수 없음
System.out.println("NO"); //no입력하고
r=false; // flag 바꿔주기
break;
} else {
bf.append("-\n"); //아니라면 - 입력
}
}
}
if (r) System.out.println(bf.toString()); //문자 모두 출력
}
}