Formula | 프로그래밍의 벗 PivotOJ
PivotOJ

Formula

시간 제한: 2000ms메모리 제한: 64MB출처: NEERC Northern Subregional 2007BOJ 3599

문제

Nick is a mathematician and his speciality is Boolean logic, especially repetition-free functions. The Boolean function is repetition-free if it can be represented as a repetition-free formula. Formula is repetition-free if each variable occurs in the formula only once.

Let us fix the syntax of considered logical formulae:

  • Variables — letters from ‘a’ to ‘k’;
  • Parentheses — if E is a formula, then (E) is another;
  • Negation — ¬E is a formula for any formula E;
  • Conjunction — E1E2 ∧ · · · ∧ En.
  • Disjunction — E1E2 ∨ · · · ∨ En.

The operations are listed from the highest priority to the lowest.

The problem is to represent given Boolean function by a repetition-free formula.

입력

The only line of input contains the Boolean function represented as a string consisting of characters ‘a’..‘k’, ‘(’, ‘)’, ‘ ’, ‘&’ and ‘|’. The last three tokens stand for ¬, ∧ and ∨ respectively. Tokens can be separated by an arbitrary number of spaces. The line contains 1 000 characters at most. The formula in the file is syntactically correct.

출력

The first line of the output file must contain “Yes” if function is repetition-free and “No” otherwise.

In the former case the following line must contain the repetition-free formula for given Boolean function in the same format as in the input file. The line must contain no more than 1 000 characters.

예제

예제 1

입력
(a | b) & (a | c)
출력
Yes
a | b & c

예제 2

입력
d&~d
출력
No

예제 3

입력
d & ~d | ~((a|~b) & (a|c))
출력
Yes
~a&(b|~c)

예제 4

입력
a & b | ~ a & ~b
출력
No
코드를 제출하려면 로그인하세요.