시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 64 MB942100.000%

문제

Consider some set of boolean variables and a boolean formula. A set of values for the variables is called satisfying if the formula evaluates to true after replacing the variables by the corresponding values. A formula is called unsatisfiable if there exist no such set.

In general, there is no known algorithm finding the satisfying set of values in polynomial time, although it is not yet proved that such algorithm does not exist. The same holds for determining whether the given formula is unsatisfiable. Despite this there are some particular classes of boolean formulae for which the problem of satisfiability and unsatisfiability can be solved in polynomial time. Now we will define one of such classes, and your task will be to create polynomial time algorithm for it.

A Horn clause is a boolean formula, constructed according to the rules below. Let $x$ be a variable from the set. Then a $literal$ is a boolean expression which consists only of the variable by itself or of the variable negation: either $x$ (positive literal) or $\neg{x}$ (negative literal). A clause is a disjunction of one or more literals. A Horn clause is a clause with at most one positive literal. 

Consider some Horn clause $\neg n_1 \lor \neg n_2 \lor\ldots\lor\neg n_k \lor p$. It would be more convenient to replace disjunctions with implication: $(n_1{\land}n_2{\land}\ldots{\land}n_k){\Rightarrow}p$. 

For consistency, when succedent (the right part of the implication) is empty we will imagine that there is a constant false specified instead; similarly empty antecedent (the left part of the implication) is supposed to be true

Consider a formula which is a conjunction of one or more Horn clauses. In this particular case, satisfiability and unsatisfiability problems can be solved by polynomial time algorithms. Write a program that would do it.

입력

The file consists of formulae, written according to the following BNF. Here $[\langle$expression$\rangle]$ means that $\langle$expression$\rangle$ may be omitted, $\{\langle$expression$\rangle\}$ means that $\langle$expression$\rangle$ may occur zero or more times. Characters in quotes denote themselves.

       <char> → ‘A’ | ‘B’ | ... | ‘Z’
   <variable> → <char> {<char>}
<horn-clause> → ‘(’ [<variable> {‘&’<variable>}] ‘=>’<variable>‘)’
              | ‘(’<variable> {‘&’<variable>} ‘=>’ [<variable>] ‘)’
    <formula> → <horn-clause> {‘&’<horn-clause>}

Each formula is specified in a separate line. The total length of the input file does not exceed $20\,000$ characters.

출력

Your output must contain either the set of variables with their values that satisfy the corresponding formulae, or word "unsatisfiable". The variables may be specified in arbitrary order; the value for each variable must be specified exactly once. If there is more than one satisfying set, output any one.

예제 입력 1

(A&B&C=>QQQQ)&(=>A)
(A=>)&(=>A)

예제 출력 1

A=true,C=false,B=false,QQQQ=false
unsatisfiable