x(sin2x+cos2x)−x=0 이라는 식은 아마 본 적이 있을 것이고, sin(2x)−2sinxcosx=0 역시 익숙할 것입니다. 그런데 tan(2x)(x−xtan2x)−2xtanx=0 이 성립한다는 사실도 알고 있었나요? 그렇다면 sin(2x)−2cosx=0 도 성립할까요? 마지막 식은 거짓입니다. 하지만 그냥 믿지만 말고, 주어진 대수식이 (정의되는 모든 곳에서) 항상 0으로 간단히 정리되는지 판별하는 프로그램을 작성하세요.
입력은 여러 개의 테스트 케이스로 이루어지며, 각 테스트 케이스는 한 줄에 하나씩 주어집니다. 각 테스트 케이스는 정수 N 으로 시작하는데, 이는 하나의 수식을 나타내는 토큰의 개수입니다. 그 뒤에 오는 N 개의 토큰이 후위 표기법(reverse polish notation)으로 수식을 나타냅니다.
표기법은 다음과 같이 동작합니다. 처음에는 비어 있는 스택이 하나 있고, 다음 명령들이 스택의 내용을 조작합니다.
x 는 변수 x 를 스택에 넣습니다.sin, cos, tan 은 스택의 맨 위 원소를 각각 그 값의 sin, cos, tan 으로 바꿉니다.+, -, * 는 스택의 맨 위 두 원소(a 가 맨 위, 그 아래가 b)를 각각 합 b+a, 차 b−a, 곱 b⋅a 로 바꿉니다.입력은 항상 유효하며, 계산이 끝나면 스택에는 정확히 하나의 원소만 남고 그것이 원하는 수식이 됩니다. 한 줄의 길이는 최대 300 글자입니다. 함수의 인자에는 함수가 들어갈 수 있어 x sin sin 도 유효하지만, 이보다 더 깊게 중첩되지는 않습니다. 입력은 N=0 인 줄로 종료됩니다.
각 테스트 케이스에 대해, 수식이 항상 0이면 Identity 를, 그렇지 않으면 Not an identity 를 한 줄에 출력합니다.