- #include <iostream> 
- using namespace std; 
-   
- class Formula { 
- protected: 
- 	bool value; 
-   
- 	static bool getValue(Formula& f) { 
- 		return f.value; 
- 	} 
-   
- 	Formula(bool value) : value(value) {} 
-   
- public: 
- 	void printValue() { 
- 		cout << value << endl; 
- 	} 
-   
- 	virtual ~Formula() = 0; 
- }; 
-   
- Formula::~Formula(){} 
-   
- class Proposition : public Formula { 
-   private: 
-     string name; 
-   public: 
-     Proposition(string s, bool b) : Formula(b), name(s) {} 
- }; 
-   
- class Conjunction : public Formula { 
-   private: 
-     Formula* l; 
-     Formula* r; 
-   public: 
-     Conjunction(Formula* f1, Formula* f2) : 
-     	Formula(Formula::getValue(*f1) && Formula::getValue(*f2)), l(f1), r(f2) {} 
- }; 
-   
- int main() { 
- 	Proposition a("a", true); 
- 	Proposition b("b", false); 
- 	Conjunction c(&a, &b); 
- 	a.printValue(); 
- 	b.printValue(); 
- 	c.printValue(); 
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgRm9ybXVsYSB7CnByb3RlY3RlZDoKCWJvb2wgdmFsdWU7CgoJc3RhdGljIGJvb2wgZ2V0VmFsdWUoRm9ybXVsYSYgZikgewoJCXJldHVybiBmLnZhbHVlOwoJfQoKCUZvcm11bGEoYm9vbCB2YWx1ZSkgOiB2YWx1ZSh2YWx1ZSkge30KCQpwdWJsaWM6Cgl2b2lkIHByaW50VmFsdWUoKSB7CgkJY291dCA8PCB2YWx1ZSA8PCBlbmRsOwoJfQoJCgl2aXJ0dWFsIH5Gb3JtdWxhKCkgPSAwOwp9OwoKRm9ybXVsYTo6fkZvcm11bGEoKXt9CgpjbGFzcyBQcm9wb3NpdGlvbiA6IHB1YmxpYyBGb3JtdWxhIHsKICBwcml2YXRlOgogICAgc3RyaW5nIG5hbWU7CiAgcHVibGljOgogICAgUHJvcG9zaXRpb24oc3RyaW5nIHMsIGJvb2wgYikgOiBGb3JtdWxhKGIpLCBuYW1lKHMpIHt9Cn07CgpjbGFzcyBDb25qdW5jdGlvbiA6IHB1YmxpYyBGb3JtdWxhIHsKICBwcml2YXRlOgogICAgRm9ybXVsYSogbDsKICAgIEZvcm11bGEqIHI7CiAgcHVibGljOgogICAgQ29uanVuY3Rpb24oRm9ybXVsYSogZjEsIEZvcm11bGEqIGYyKSA6CiAgICAJRm9ybXVsYShGb3JtdWxhOjpnZXRWYWx1ZSgqZjEpICYmIEZvcm11bGE6OmdldFZhbHVlKCpmMikpLCBsKGYxKSwgcihmMikge30KfTsKCmludCBtYWluKCkgewoJUHJvcG9zaXRpb24gYSgiYSIsIHRydWUpOwoJUHJvcG9zaXRpb24gYigiYiIsIGZhbHNlKTsKCUNvbmp1bmN0aW9uIGMoJmEsICZiKTsKCWEucHJpbnRWYWx1ZSgpOwoJYi5wcmludFZhbHVlKCk7CgljLnByaW50VmFsdWUoKTsKfQ==