다다스의 재무상태표에는 여러 계정이 기록되어 있다. 각 계정은 부채, 자본, 자산 중 하나의 종류와 이름, 음이 아닌 금액을 가진다.
올바른 재무상태표는 다음 등식을 만족한다.
여기서 각 항은 해당 종류에 속하는 모든 계정 금액의 합이다.
일부 계정의 금액이 손상되어 NULL로 표시되었다. 다다스는 손상된 계정들을 삭제하고, 해당 금액을 모두 합친 하나의 새 계정 OTHER를 마지막에 추가하여 재무상태표를 복구하려고 한다. 손상되지 않은 계정의 종류, 이름, 금액 및 상대적인 순서는 그대로 유지한다.
새 계정은 손상된 계정이 속한 등식의 같은 쪽에 있어야 한다. 손상된 계정들이 모두 자산이면 새 계정의 종류는 자산이며, 모두 부채이면 부채, 모두 자본이면 자본이다. 손상된 계정이 자산과 부채·자본 양쪽에 존재하면 복구 결과를 유일하게 결정할 수 없다. 또한 손상된 계정이 부채와 자본에 동시에 존재해도 새 계정의 종류를 유일하게 결정할 수 없으므로 복구할 수 없다.
손상된 계정이 하나도 없다면 새로운 계정을 추가하지 않고 원래 재무상태표를 그대로 유지한다. 다만 이때도 등식이 성립하지 않는다면 복구할 수 없다.
복구한 모든 계정의 금액은 음이 아닌 정수여야 하며, 복구 결과는 유일하게 결정되어야 한다. 다다스의 지시에 따라 재무상태표를 복구하는 프로그램을 작성하자.
첫째 줄에 재무상태표에 기록된 계정의 개수 이 주어진다.
두 번째 줄부터 개의 줄에 걸쳐 각 계정의 정보 , , 가 공백으로 구분되어 주어진다.
재무상태표를 복구할 수 없다면 impossible task!를 출력한다.
복구할 수 있다면 첫째 줄에 복구한 재무상태표의 계정 개수 을 출력한다. 이후 개의 줄에 걸쳐 각 계정의 종류, 이름, 금액을 공백으로 구분하여 출력한다. 종류는 입력과 같이 , , 중 하나의 정수로 출력한다.
손상되지 않은 계정들은 입력에서 주어진 순서대로 먼저 출력한다. 손상된 계정이 있다면 이 계정들을 통합한 새로운 계정 OTHER를 마지막에 출력한다. 손상된 계정이 하나도 없다면 새로운 계정을 출력하지 않는다.
손상된 자산의 합계는 이다.
자산과 부채 양쪽에 손상된 계정이 존재하므로 유일하게 복구할 수 없다.
손상된 부채의 금액은 이다.
는 계정의 종류를 나타내며, 은 부채, 은 자본, 는 자산을 의미한다. 는 계정의 이름이다. 는 계정의 금액이며, 음이 아닌 정수 또는 NULL이다. NULL은 해당 계정이 손상되었음을 의미한다.
입력은 다음과 같은 형식으로 주어진다.
_)로 이루어진 문자열이다.NULL이거나 인 정수이다 ().손상된 자산의 금액은 이어야 한다. 음수이므로 복구할 수 없다.