차원

아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

친구 크리스티안과 함께 1년 동안 세계 곳곳을 여행하기로 했다. 문화가 다르면 단위도 다르고, 공학자에게 가장 성가신 차이가 바로 단위다. 사람들은 마일, 퍼킨, 마이크로포트나이트, 촉광, 파인트, 킬로와트시를 쓰지만, 아래 표의 SI 기본단위만 쓰면 훨씬 편하다.

물리량이름기호
길이미터m
질량킬로그램kg
시간s
전류암페어A
온도켈빈K
광도칸델라cd

표 1: SI 기본단위

너는 SI 단위를 워낙 좋아해서 다른 단위는 아예 쓰지 않는다. 줄(J), 뉴턴(N), 옴 같은 유도단위도 각각 kg m^2 / s^2, kg m / s^2, kg m^2 / s^3 A^2처럼 기본단위로 적을 수 있다. 그래서 여행하는 동안 마주친 단위를 정의와 함께 모두 기록해 둔다. Pa = N / m^2처럼 앞에서 정의한 단위에 기대는 정의도 있다.

정의를 손에 들고 있으면 60 firkins / microfortnights나 63 km / h 같은 표기를 만나도 곧바로 SI 단위로 바꾼다. 100 m + 1.3 km이나 7 N * 8 ohm 같은 계산도 금방 끝난다.

단위 정의와 계산 목록이 주어진다. 각 계산의 결과를 SI 기본단위로 바꿔서 출력하라.

입력

입력은 다음 문법을 따른다. ?는 0개 또는 1개, +는 1개 이상, *는 0개 이상을 뜻한다.

power      ::= { 2 이상 4 이하의 정수 }
unit       ::= { 영문 대문자 또는 소문자 }+
dimension  ::= unit ['^' power]?
size       ::= { 부동소수점 수 } [' ' dimension]* [' /' [' ' dimension]+]?
operator   ::= '+' 또는 '-' 또는 '*'
expression ::= size ' ' operator ' ' size
definition ::= unit ' = ' size

한 줄 안의 토큰은 공백 하나로 구분한다. 나눗셈 기호 /도 하나의 토큰이라 앞뒤에 공백이 있고, 정의의 =도 마찬가지다. 부동소수점 수는 63, 1.3, -2.5, 1E5처럼 적힌다.

첫째 줄에 새로 정의하는 단위의 개수 UU가 주어진다. 이어지는 UU개의 줄에 단위 정의가 한 줄에 하나씩 주어진다. 그다음 줄에 정수 NN이 주어지고, 이어지는 NN개의 줄에 식 또는 크기가 한 줄에 하나씩 주어진다.

  • 0<U1000 < U \le 100
  • 0<N10000 < N \le 1000
  • 모든 지수는 2 이상 4 이하다.
  • 단위 이름은 영문자로만 이루어지고 길이가 10보다 짧으며, 대소문자를 구분한다.
  • 새로 정의하는 이름은 SI 기호와 다르고 앞에서 정의한 이름과도 다르다. 정의의 오른쪽에는 SI 기호와 앞에서 정의한 단위만 나온다.
  • 한 크기 안에서 같은 단위가 두 번 나오지 않는다.
  • 길이가 140자를 넘는 줄은 없다.
  • 입력값, 출력값, 계산 도중에 나오는 값은 모두 절댓값이 1010010^{100} 이하다.
  • 0으로 나누는 계산은 없다.

출력

각 계산마다 한 줄에 결과를 SI 기본단위로 바꿔서 출력한다. +-의 양쪽 차원이 서로 다르면 계산할 수 없으므로 그 줄에는 Incompatible을 출력한다.

한 줄은 다음 형식으로 적는다.

  • 먼저 크기를 유효숫자 6자리 지수 표기로 적는다. 정수부 한 자리, 소수점, 소수부 다섯 자리, 문자 e, 지수의 부호, 두 자리 이상의 지수 순서다. C의 printf("%.5e", x)나 파이썬의 "%.5e" % x가 만드는 형식과 같고, 1.40000e+03이나 -2.50000e-03처럼 나온다. 값이 0이면 부호 없이 0.00000e+00을 적는다.
  • 그다음 지수가 양수인 기본단위를 m, kg, s, A, K, cd 순서로 적는다.
  • 지수가 음수인 기본단위가 하나라도 있으면 토큰 /를 적고, 그 단위를 같은 순서로 지수의 절댓값과 함께 적는다.
  • 지수가 0인 단위는 적지 않고, 지수가 1이면 지수를 적지 않는다.
  • 토큰 사이는 공백 하나로 띄우고, ^ 앞뒤는 띄우지 않는다.
  • 남는 단위가 하나도 없으면 크기만 적는다.