$(X_{1,1}∨X_{1,2})∧(X_{2,1}∨X_{2,2})∧...∧(X_{M,1}∨X_{M,2})$ で表される論理式が与えられる。ただし $X_{i,j} \in \{x_1, x_2, ..., x_N, ~x_1, ~x_2, ..., ~x_N\}$である。
与えられた論理式が真となるように各変数 $x_i$ ($1 \leq i \leq N$)に真偽値を割り当てたい。そのような割り当て方が何通りあるかを求めよ。
入力は以下の形式に従う。与えられる数は全て整数である。
$N$ $M$ $Y_{1,1}$ $Y_{1,2}$ $Y_{2,1}$ $Y_{2,2}$ $...$ $Y_{M,1}$ $Y_{M,2}$
$Y_{i,j}>0$ のとき、$X_{i,j} = x_{Y_{i,j}}$ であり、$Y_{i,j}<0$ のとき、$X_{i,j} = ~x_{-Y_{i,j}}$ である。
論理式を真にするような各変数の真偽値の割り当て方が何通りあるかを $10^9+7$ で割った余りを1行に出力せよ。
2 1 1 -2
3
論理式 $(x1∨~x2)$ を真にする割り当ては $(x1,x2) = (True, True), (True, False), (False, False)$ の3通りである。
3 2 -1 -2 1 -3
4
論理式 $(~x1∨~x2)∧(x1∨~x3)$ を真にする割り当ては $(x1,x2,x3) = (True, False, True), (True, False, False), (False, True, False), (False, False, False)$ の4通りである。