출납장부

N개의 금액과 부호 있는 합계 F가 주어질 때, 합이 F가 되는 모든 부호 선택에서 각 금액이 더하기로 정해지는지, 빼기로 정해지는지, 자유로운지를 판정한다.

보통6동적 계획법백트래킹완전 탐색구현면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

부패 척결 재단이 놀로니아에서 대규모 부패 사건을 적발했다. 수사 과정에서 조직의 불법 거래를 적어 둔 공책과 장부 여러 권을 압수했다.

장부의 페이지에는 거래 금액이 놀로니아의 화폐 단위인 닐로고(기호는 N$)로 적혀 있고, 그 페이지의 거래를 모두 합한 현금 흐름도 함께 적혀 있다. 예를 들어 어떤 페이지에 N$ 7 입금, N$ 2 입금, N$ 3 출금, N$ 1 입금, N$ 11 출금이 기록되어 있으면 이 페이지의 현금 흐름은 7+23+111=47 + 2 - 3 + 1 - 11 = -4 이다.

장부를 적은 사람들은 수사를 어렵게 하려고 각 거래가 입금인지 출금인지 표시하지 않았다. 위의 예에서 페이지에 남은 금액 기록은 7, 2, 3, 1, 11 뿐이다. 반면 현금 흐름은 언제나 부호까지 그대로 적혀 있어서, 이 페이지에는 4-4가 적혀 있다.

기소하려면 각 거래가 입금인지 출금인지 확실하게 말할 수 있어야 한다. 위의 예에서 N$ 7은 반드시 입금이고 N$ 11은 반드시 출금이다. 그러나 N$ 2, N$ 3, N$ 1은 어느 쪽인지 확정할 수 없다. N$ 2와 N$ 1이 입금이고 N$ 3이 출금일 수도 있고, N$ 2와 N$ 1이 출금이고 N$ 3이 입금일 수도 있다.

거래가 많이 적힌 페이지는 손으로 복원하기 어렵다. 각 거래의 종류를 판정하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에 페이지에 적힌 거래의 개수 NN과 그 페이지의 현금 흐름 FF가 공백으로 구분되어 주어진다(2N402 \le N \le 40, 16000F16000-16000 \le F \le 16000). 이어지는 NN개의 줄에는 ii번째 거래의 금액 TiT_i가 한 줄에 하나씩 주어진다(1Ti10001 \le T_i \le 1000).

마지막 테스트 케이스 다음 줄에는 공백으로 구분된 0 두 개만 주어진다.

출력

각 테스트 케이스마다 NN개의 문자로 이루어진 한 줄을 출력한다. ii번째 문자는 ii번째 거래가 반드시 입금이면 +, 반드시 출금이면 -, 어느 쪽인지 확정할 수 없으면 ?이다.

적힌 현금 흐름을 만드는 입금과 출금의 조합이 없으면 그 테스트 케이스에는 * 한 문자만 있는 줄을 출력한다.