Simpson 先生起床时略感疲惫。又一个辛苦工作的日子开始了。办公室的书桌上有一叠等待他检查的试卷,里面是学生对数学课问题的回答,但这些答案看起来仿佛只是墨水污迹。
他的头疼来自学生的“创造力”。他们为每道题提供了各种各样的答法。他自己为每道题准备了答案,当然是正确的,而且从他的审美角度看也是最好的。
一些学生写出的代数式与预期答案等价,但字面形式与 Simpson 先生的答案相差很大。有些学生写出的代数式不与他的答案等价,却看起来十分相似。只有少数学生的答案与他的完全相同。
他的职责是检查每个表达式是否与他准备的答案在数学上等价,以免与他的答案等价的表达式被判为“错误”,即使这些表达式不符合他的审美标准。
他已经花了五天检查这些表达式。突然,他站起来喊道:“我受够了!我必须寻求帮助。”
你的任务是编写程序,帮助 Simpson 先生判断每个答案是否与“正确”答案等价。试卷上的代数式是以变量符号 $a,b,\ldots,z$ 为变量、系数为整数的多元多项式,例如 $(a+b^2)(a-b^2)$、$ax^2+2bx+c$ 和 $(x^2+5x+4)(x^2+5x+6)+1$。
Simpson 先生会按照试卷原样输入每个答案表达式;他保证输入的代数式是一串由加法运算符 + 和 - 分隔的项,表示用这些运算符求各项的和(如果有这些运算符)。一个项是并列写出的多个因子,表示它们的乘积。一个因子可以是:(a) 用十进制数字串表示的非负整数;(b) 一个变量符号(小写字母 a 到 z 之一),其后可以跟符号 ^ 和一个非零数字,表示该变量的幂;或 (c) 括号括起的代数式,递归定义。注意,运算符 + 或 - 只作为二元运算符出现,不会作为指定操作数正负号的一元运算符。
他说,如果一个整数紧跟在另一个整数或符号 ^ 后的数字之后,会在该整数前放一个或多个空格。他还说,为使表达式易读,可以在各处加空格,但绝不会在一个整数的两个连续数字之间加空格。这些表达式并不太复杂:将任意表达式中的 - 替换为 + 后,即使完全展开成系数与变量幂乘积的和,也不会出现变量的 $10$ 次幂,或超过十亿的系数。
输入格式
输入由一系列行块组成。一个行块包含若干行,每行是一个表达式,最后是一行终止行。最后一个行块之后还有另一行终止行。终止行只包含一个句点。
每个行块的第一个表达式由 Simpson 先生准备;块内其后的所有表达式都是学生的答案。表达式由小写字母、数字、运算符 +、-、^、括号 (、) 和空格组成。包含表达式的一行不超过 80 个字符。
输出格式
对于每个学生答案,程序应根据其是否在数学上等价于预期答案,输出一行且只包含 yes 或 no。在每个行块之后,程序应输出一行且只包含一个句点。
样例
输入格式 1
a+b+c (a+b)+c a-(b-c)+2 . 4ab (a - b)(0-b+a) - 1a ^ 2 - b ^ 2 2 b 2 a . 108 a 2 2 3 3 3 a 4 a^1 27 . .
输出格式 1
yes no . no yes . yes yes .