같은 것은 같다

정수 계수를 가진 다변수 다항식 표현식을 파싱하고, 각 학생 답안이 기준 표현식과 동치인지 판정한다.

보통7문자열구현재귀수학아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

심슨 선생님은 약간 피곤한 몸으로 일어났다. 힘든 하루가 또 시작된 것이다. 연구실 책상 위에는 검토를 기다리는 답안지가 쌓여 있다. 수학 수업의 문제에 학생들이 쓴 답인데, 언뜻 보면 잉크 얼룩처럼 보일 뿐이다.

두통의 원인은 학생들의 "창의력"이다. 학생들은 문제마다 갖가지 방식으로 답을 적어 냈다. 선생님에게는 문제마다 자신이 준비한 정답이 있다. 당연히 옳은 답이고, 선생님의 미적 기준으로는 가장 아름다운 형태다.

어떤 학생은 정답과 동치인 대수식을 썼지만, 글자 그대로의 모양은 선생님의 답과 전혀 다르다. 어떤 학생은 정답과 동치가 아닌 식을 썼는데, 겉보기에는 정답과 매우 비슷하다. 선생님의 답과 정확히 똑같은 답안은 몇 장뿐이다.

각 식이 준비한 정답과 수학적으로 동치인지 확인하는 것이 선생님의 의무다. 미적 기준에는 맞지 않더라도 정답과 동치인 식을 "오답"으로 채점하는 일은 없어야 하기 때문이다.

닷새 동안 식을 확인하던 선생님은 갑자기 일어나 소리쳤다. "더는 못 하겠다! 도움을 구해야겠어."

각 답안이 "정답"과 동치인지 판정해서 심슨 선생님을 돕는 프로그램을 작성하라. 답안지에 적힌 대수식은 변수 기호 aa, bb, ..., zz에 대한 정수 계수 다변수 다항식이다. 예를 들어 (a+b2)(ab2)(a + b^2)(a - b^2), ax2+2bx+cax^2 + 2bx + c, (x2+5x+4)(x2+5x+6)+1(x^2 + 5x + 4)(x^2 + 5x + 6) + 1 같은 식이다.

선생님은 답안지에 적힌 식을 그대로 입력한다. 입력하는 대수식은 다음 규칙을 따른다는 것을 선생님이 약속한다. 식은 덧셈 연산자 +와 뺄셈 연산자 -로 구분된 항의 나열이며, 그 연산자로 항을 더하거나 뺀 값을 나타낸다. 항은 인수를 이어 쓴 것이며 인수의 곱을 나타낸다. 인수는 다음 셋 중 하나다. (a) 십진수 숫자열로 쓴 음이 아닌 정수, (b) 변수 기호(소문자 a부터 z 중 하나)이며 그 뒤에 기호 ^와 0이 아닌 숫자 하나가 붙어 그 변수의 거듭제곱을 나타낼 수 있다, (c) 괄호로 감싼 대수식(재귀적으로 정의). 연산자 +-는 이항 연산자로만 나타나며, 피연산자의 부호를 나타내는 단항 연산자로는 쓰이지 않는다.

정수가 다른 정수 바로 뒤에 오거나 ^ 뒤의 숫자 바로 뒤에 올 때는 그 정수 앞에 공백을 하나 이상 넣는다고 선생님이 말했다. 읽기 쉽도록 식 여기저기에 공백을 넣을 수도 있지만, 한 정수를 이루는 연속한 두 숫자 사이에 공백을 넣는 일은 결코 없다. 또한 식은 그리 복잡하지 않아서, 어떤 식이든 -를 모두 +로 바꾼 뒤 계수와 변수 거듭제곱의 곱의 합 형태로 완전히 전개해도 10제곱 이상인 변수는 나오지 않고 10억을 넘는 계수도 나오지 않는다.

입력

입력은 여러 블록으로 이루어진다. 블록은 각 줄에 식 하나가 적힌 여러 줄과 종료 줄 하나로 이루어진다. 마지막 블록 뒤에는 종료 줄이 하나 더 있다. 종료 줄은 마침표 . 하나만으로 이루어진 줄이다.

블록의 첫 식은 심슨 선생님이 준비한 정답이고, 블록의 나머지 식은 모두 학생의 답안이다. 식은 소문자, 숫자, 연산자 +, -, ^, 괄호 (, ), 공백으로 이루어진다. 식이 적힌 줄의 길이는 80자를 넘지 않는다.

출력

학생의 답안마다 그 답안이 정답과 수학적으로 동치이면 yes, 아니면 no만으로 이루어진 줄을 한 줄씩 출력한다. 각 블록이 끝날 때마다 마침표 . 하나만으로 이루어진 줄을 출력한다.