package main import ( "fmt" "strconv" ) func main() { var n int fmt.Scan(&n) flg := false ans := "" for range make([]struct{}, pow(2, n)) { q := make([]int8, n) for j := range q { fmt.Scan(&q[j]) } var r int8 fmt.Scan(&r) if r == 1 { if ans != "" { ans += "∨" } ans += "(" for j, v := range q { if j != 0 { ans += "∧" } if v == 0 { ans += "¬" } ans += "P_" + strconv.Itoa(j+1) } ans += ")" } else { flg = true } } if ans == "" { ans = "⊥" } else if !flg { ans = "⊤" } fmt.Printf("A=%s\n", ans) } func pow(a, b int) int { res := 1 for range make([]struct{}, b) { res *= a } return res }