우리 사이엔 케미가 있어, 자기야

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

문제

배리는 화학과 학생으로, 화학 반응식의 계수를 맞추는 것 한 가지만 빼면 무엇이든 잘한다. 화학 반응은 화학 반응식으로 나타내며, 왼쪽에는 반응물, 오른쪽에는 생성물을 두고 화살표로 구분한다. 예를 들어 알루미늄과 산소로 산화 알루미늄을 만드는 반응은 Al + O2 -> Al2O3 으로 쓴다.

이 식은 균형이 맞지 않는다. 왼쪽에는 알루미늄(Al) 원자가 1개, 오른쪽에는 2개 있고, 산소(O) 원자는 왼쪽에 2개, 오른쪽에 3개 있다. 올바르게 균형을 맞춘 식은 4Al + 3O2 -> 2Al2O3 이다.

식의 균형이 맞았을 때, 모든 계수는 양의 정수여야 하며 그들의 최대공약수는 $1$ 이어야 한다. 다음과 같이 더 어려운 식도 있다: Fe2(SO4)3 + KSCN -> K3Fe(SCN)6 + K2SO4.

괄호 안의 원자들은 닫는 괄호 바로 뒤에 오는 수만큼 모두 곱해진다(따라서 이 식에서 왼쪽에는 산소 원자가 12개, 오른쪽에는 탄소(C) 원자가 6개 있다). 하나의 반응물이나 생성물 안에서 같은 화학 기호는 많아야 한 번만 나타난다. 주어진 반응식의 균형을 맞추는 계수를 구하여라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 한 줄이며, 두 양의 정수 $r$ 과 $p$(반응물의 수와 생성물의 수, 각각 최대 $10$)로 시작한다. 이어서 $r$ 개의 반응물, 그다음 $p$ 개의 생성물이 공백으로 구분되어 주어진다. 각 반응물과 생성물은 하나 이상의 항으로 이루어진 화학식이며, 항은 하나의 화학 기호, 하나의 화학 기호 뒤에 $2$ 이상의 정수가 붙은 것, 또는 괄호로 묶인 화학식(항 하나 이상) 뒤에 $2$ 이상의 정수가 붙은 것 중 하나이다. 모든 화학 기호는 한 글자 또는 두 글자이며, 첫 글자만 대문자이다. 한 테스트 케이스에서 서로 다른 화학 기호는 $20$ 개를 넘지 않는다. 두 개의 $0$ 으로 이루어진 줄이 입력의 끝을 나타내며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 Case X:($X$ 는 $1$ 부터 시작하는 테스트 케이스 번호)에 이어, 반응식의 균형을 맞추는 계수를 반응물과 생성물이 주어진 순서대로 공백 하나로 구분하여 출력한다. 식의 균형을 아예 맞출 수 없거나, 균형을 맞출 수는 있지만 유일하지 않은 경우(공약수 배수를 제외하고도 서로 다른 계수 집합이 여러 개 존재하는 경우)에는 계수 대신 No 를 출력한다.