数字、文字 x 、括弧 ( , ) 、記号 | , ^ , & , = からなる についての方程式が文字列 として与えられます。
ここで方程式は、以下のBNFによって定義される <Equation> です。
<Equation> ::= <Expression> "=" <Number>
<Expression> ::= <OrTerm>
<OrTerm> ::= <XorTerm> | <OrTerm> "|" <XorTerm>
<XorTerm> ::= <AndTerm> | <XorTerm> "^" <AndTerm>
<AndTerm> ::= <Value> | <AndTerm> "&" <Value>
<Value> ::= <Number> | "x" | "(" <Expression> ")"
<Number> ::= 以上 未満の整数
文字と記号はそれぞれ以下のように説明されます。
x:変数 。ただし、 は 以上の整数である。|:ビットごとの論理和 。^:ビットごとの排他的論理和 。ただし、 よりも先に計算される。&:ビットごとの論理積 。ただし、 よりも先に計算される。=:等号 。例えば、以下の例は <Equation> になり得ます。
4|1^3&x=7 : , 計算順序は であることに注意。(x|1)&((3^x)&15)=1073741823 : (((x)))=314 : 1=2 : ただし、以下の例は <Equation> になり得ません。
x=-1x=99999999992x=4123=xx=3=3 についての方程式の解の最小値を求めてください。ただし、解が存在しない場合は -1 を出力してください。
個のテストケースが与えられるので、それぞれについて答えてください。
<Equation> である入力は以下の形式で標準入力から与えられます。ここで、 は 番目のテストケースです。
各テストケースは以下の形式で与えられます。
標準出力に 行出力し、 行目には 番目のテストケースについての答えを出力してください。
各テストケースについて、 についての方程式の解の最小値を出力してください。ただし、解が存在しない場合は -1 を出力してください。
5 4|1^3&x=7 4&(3|x)=6 x^x|x&x=100 1=2 x|(x&(x|(x^1234)^5678)|9012)=13301
2 -1 100 -1 4289
この入力では 個のテストケースが与えられています。 番目のテストケースについて、以下のことが言えます。
の解のうち最小のものは です。
を満たす は存在しません。この場合、-1 を出力してください。
の解は です。方程式の中に が複数個含まれている場合もあります。
を満たす は存在しません。方程式の中に が含まれない場合もあります。