6/2(1+2)

Time Limit : 8 sec, Memory Limit : 65536 KB

6÷2(1+2)

English text is not available in this practice contest.

数学科の学生であるきたまさ君は,数学はとても得意なのだが算数はあまり得意ではない. 特に演算子の優先順位が苦手で, カッコの中を先に計算するというのはわかるのだが, "+" と "*" のどちらを優先したら良いかとか複数の演算子が並んでいるときに左から計算したら良いのか右から計算したら良いのか覚えておらず, その時の気分で好きな順番で計算をしている.例えば,"1*1-1+1"という数式を前から"((1*1)-1)+1"という順番で計算する場合もあれば,真ん中から"(1*(1-1))+1"という順番で計算する場合さえある. また,分数や小数も苦手で,割り算では常に絶対値の小さい方に丸め,小数部を切り捨てて整数にしてしまう. 割る数がゼロであった場合には,きたまさ君はどこかで間違えたと思ってもう一度最初から計算しなおすことにしている.

きたまさ君はどんな順番で計算しても最終的な計算結果は同じになると主張しているので,あなたにはそれが間違いであると示すために,与えられた数式に対して きたまさ君の計算結果が何通りあり得るかを求めるプログラムを書いて欲しい. ただし,演算の順番が異なっていても,最終的な答えが同じならば一つと数えるものとし, また,与えられる数式は,少なくとも一つはゼロ割が発生しない演算順序が存在し,いかなる演算順序で計算した場合でも,計算結果と途中で現れる数の絶対値は常に 109 以下であることが保証されている.

Input

入力はひとつ以上の行からなり,入力の各行は数式ひとつを含む.数式の文法は以下の BNF で与えられる.

<expr> ::= <num>
        | "(" <expr> ")"
        | <expr> "+" <expr>
        | <expr> "-" <expr>
        | <expr> "*" <expr>
        | <expr> "/" <expr>
<num> ::= <digit> | <num> <digit>
<digit> ::= "0" | "1" | "2" | "3" | "4"
          | "5" | "6" | "7" | "8" | "9"

すべての数式はこの構文規則に従う.また,入力行の長さは 200 文字を超えない.ひとつの数式が含む演算子 ( "+" , "-" , "*" , "/" ) の数は 10 個を超えない.

入力の終わりは "#" ひとつだけからなる行によって示される.

Output

それぞれの数式について,きたまさ君の計算結果が何通りあり得るかを出力せよ.出力は数式ひとつごとに 1 行とする.

Sample Input

6/2*(1+2)
1-1-1
(1-1-1)/2
#

Output for the Sample Input

2
2
1

Source: ACM International Collegiate Programming Contest , ACM-ICPC Japan Alumni Group Practice Contest for Japan Domestic 2011, 2011-06-12
http://acm-icpc.aitea.net/