你和你的朋友 Christian 决定休假一年,环游世界去看看壮丽的风景,结识有趣的人,体验不同的文化。不幸的是,不同的文化带来了令人头疼的差异。工程师们所知的最困难的差异就是单位差异。为什么人们还在使用英里、firkin、微双周(microfortnights)、烛光、蒲式耳(boisseaux)、foe、品脱、千瓦时,更不用说摄氏度了,而他们本可以更快乐地使用标准且受人喜爱的国际单位制(SI)单位:米、千克、秒、安培、开尔文和坎德拉?
| 物理量 | 名称 | 符号 |
|---|---|---|
| 长度 | 米 | m |
| 质量 | 千克 | kg |
| 时间 | 秒 | s |
| 电流 | 安培 | A |
| 温度 | 开尔文 | K |
| 发光强度 | 坎德拉 | cd |
表 1:国际单位制(SI)单位列表
事实上,你非常热爱 SI 单位,以至于拒绝使用任何其他单位。诸如焦耳(J)、牛顿(N)和欧姆($\Omega$)之类的导出单位可以完美地用其等效的 SI 单位表示,分别为 $\text{kg m}^2 / \text{s}^2$、$\text{kg m} / \text{s}^2$ 和 $\text{kg m}^2 / \text{s}^3 \text{A}^2$。因此,在旅行期间,你记录了遇到的所有单位及其定义。当然,有些定义依赖于其他定义,例如 $\text{Pa} = \text{N} / \text{m}^2$。
有了这些定义,你就不必再忍受诸如 $60 \text{ firkins} / \text{microfortnights}$ 或 $63 \text{ km} / \text{h}$ 之类的无稽之谈了,因为你总是可以将它们转换为 SI 单位。即使是像 $100 \text{ m} + 1.3 \text{ km}$ 和 $7 \text{ N} \cdot 8 \Omega$ 这样的计算对你来说也变得轻而易举。
输入格式
给出了以下语法('?' 表示“零个或一个”,'+' 表示“一个或多个”,'*' 表示“零个或多个”):
power ::= { 大于 1 的整数 }
unit ::= { 大小写英文字母 }+
dimension ::= unit ['^' power ]?
size ::= { 任意浮点数 } [' ' dimension]* ['/' [' ' dimension]+]?
operator ::= '+' OR '-' OR '*'
expression ::= size ' ' operator ' ' size
unit definition ::= unit '=' size所有单位的长度均小于 10,且在同一个 size 中,单位不会重复。
输入的第一行包含一个整数 $U$,表示新单位的数量。
接下来是 $U$ 行,每行包含一个新单位的定义。在单位定义之后,有一行包含一个整数 $N$,随后是 $N$ 行,每行包含一个表达式或一个 size。
在输入中,所有的 power 均小于 5,且所有的 unit 均为 SI 单位符号或先前定义的单位。
输出格式
对于每次计算,输出一行答案,即表达式或 size 本身转换为 SI 单位后的结果。如果无法计算答案,则输出 “Incompatible”(不含引号)。答案应格式化为 size,并遵循以下说明:
- 单位可以按任意顺序书写,但必须保持在除号的正确一侧。
- 如果单位的指数为 0,则不输出该单位;如果指数为 1,则不输出指数。
- 在每个单位之间,以及单位与除号
/之间,输出一个空格。 - 在指数符号
^前后不要输出任何空格。
数据范围
- $0 < U \le 100$
- $0 < N \le 1000$
- 单位区分大小写。
- 每行长度不超过 140 个字符。
- 输入、输出或计算过程中的任何部分,其数值的绝对值均不超过 $10^{100}$。
- 计算过程中的任何部分都不会出现除以 0 的情况。
- 任何相对误差或绝对误差在 $10^{-6}$ 以内的输出均被接受。
样例
输入 1
4 km = 1000 m h = 3600 s J = 1 kg m^2 / s^2 X = 3 m^2 kg s / A K cd^4 4 100 m + 1.3 km 63 km / h 1E5 J * 0.003 h^2 / km^2 1 J - 2 X
输出 1
1400.0 m 17.5 m / s 3888.0 kg Incompatible