초등 수학

주어진 n개 정수 쌍마다 덧셈, 뺄셈, 곱셈 중 하나를 골라 모든 결과가 서로 다르게 하고 사전 순으로 가장 앞선 배치를 출력합니다.

보통7그래프그리디아직 제출이 없습니다시간 제한10초메모리 제한256 MB

문제

엘렌은 초등학생에게 수학을 가르치고 있고, 곧 기말고사를 낸다. 기말고사는 nn개의 문제로 이루어진다. 문제마다 학생은 정수 두 개를 더하거나(+), 빼거나(-), 곱한다(*).

엘렌은 정수 쌍 nn개를 이미 골라 두었다. 이제 쌍마다 어떤 연산을 시킬지 정하면 된다. 학생이 지루해하지 않도록 nn개의 계산 결과는 모두 서로 달라야 한다.

엘렌이 시험을 잘 준비하도록 도와주자.

입력

첫째 줄에 쌍의 개수 nn이 주어진다. (1n25001 \le n \le 2500)

다음 nn개 줄에 쌍을 이루는 두 정수 aabb가 공백으로 구분되어 한 줄에 하나씩 주어진다. (106a,b106-10^6 \le a, b \le 10^6)

출력

조건을 만족하는 배정이 있으면 입력과 같은 순서로 nn개 줄을 출력한다. ii번째 줄은 a op b = c 형태이고, op+, -, * 중 하나, c는 그 연산의 결과이다. 각 요소는 공백 하나로 구분한다. nn개의 결과는 모두 서로 달라야 한다.

조건을 만족하는 배정이 여러 개일 수 있으므로 다음 기준으로 하나만 출력한다. 연산자를 입력 순서대로 이어 붙인 문자열을 +, -, * 순서로 비교해서 가장 작은 것을 출력한다. 즉 첫 번째 쌍부터 차례로 보면서, 남은 쌍에 서로 다른 결과를 모두 줄 수 있는 한 +를 쓰고, 안 되면 -, 그래도 안 되면 *를 쓴다.

조건을 만족하는 배정이 없으면 impossible을 출력한다.