소방관

시간 제한1초메모리 제한128 MB

문제

한 수학자는 모든 문서를 책상 옆 서류함에 보관했다. 어느 날 그의 사무실에 불이 나서 연구 자료 대부분이 심하게 훼손되었다. 다행히 오랜 연구 기간 동안 풀었던 방정식 중 일부는 부분적으로 남아 있었다. 각 방정식은 왼쪽에 식이 있고 오른쪽에 결과가 있었다. 남은 식에는 숫자와 괄호는 모두 그대로 있었지만, 그 사이의 연산자 중 일부는 불에 타 사라졌다. 게다가 방정식의 결과들이 흩어져 버려서, 어떤 결과가 어떤 식에 속하는지 확신할 수 없게 되었다. 각각의 남은 식과 결과가 서로 맞을 수 있는지 판단하도록 도와주자.

식에는 1 이상 999 이하의 정수, 이항 연산자 +, -, *, /, 괄호, 그리고 사라진 연산자를 나타내는 물음표 ?가 들어 있다. 각 식에 대해, 물음표 자리에 연산자를 적절히 채워서 식의 값이 주어진 결과와 같아지도록 만들 수 있는지 판단해야 한다.

식은 다음 제약을 만족한다.

  1. 하나의 식은 최대 100개의 문자로 이루어진다.
  2. 한 쌍의 괄호는 최대 하나의 연산자와 그 두 피연산자만을 감싼다. 각 피연산자는 그 자체로 괄호로 묶인 식일 수 있다.
  3. 상수에는 부호가 없다. 즉 식 안에 음수는 쓰이지 않는다.
  4. 하나의 식에는 물음표(사라진 연산자)가 최대 10개까지 있다.

값은 다음 규칙으로 계산한다.

  1. */+, -보다 우선순위가 높다. 괄호는 평소처럼 우선순위를 바꾼다.
  2. 네 연산자는 모두 왼쪽 결합이다. 즉 왼쪽에서 오른쪽으로 묶인다. 숫자 a, b, c에 대해 a*b*c = (a*b)*c, a/b/c = (a/b)/c, a/b*c = (a/b)*c, a+b+c = (a+b)+c, a-b+c = (a-b)+c이다.
  3. 정수끼리의 나눗셈은 소수 부분을 버린다(0 방향으로 버림). 예를 들어 2/5 = 0, 9/5 = 1, 100/6 = 16이다.

입력

첫째 줄에 방정식의 개수 N이 주어진다. 이어지는 각 방정식은 두 줄로 주어진다. 첫째 줄은 식(왼쪽 변)이고, 둘째 줄은 정수 결과(오른쪽 변)이다. 입력의 각 줄에는 공백이 없으며, 모든 식은 문법 오류가 없음이 보장된다.

출력

각 방정식에 대해, 사라진 연산자를 적절히 골라 식의 값을 결과와 같게 만들 수 있으면 yes를, 그렇지 않으면 no를 출력한다. 방정식이 주어진 순서대로 한 줄에 하나씩 답을 출력한다.