#include <iostream>
using namespace std;
struct If { If(bool active) : active_(active) { } bool active_; };
struct Else { } _else;
struct Endif { } _endif;
class xstream
{
public:
xstream(std::ostream& os) : os_(os) { }
template <typename T>
friend xstream& operator<<(xstream& s, const T& t)
{
if (s.active_) s.os_ << t;
return s;
}
private:
bool active_;
std::ostream& os_;
};
template <>
xstream& operator<< <If>(xstream& s, const If& _if)
{
s.active_ = _if.active_;
return s;
}
template <>
xstream& operator<<<Else>(xstream& s, const Else& _else)
{
s.active_ ^= true;
return s;
}
template <>
xstream& operator<<<Endif>(xstream& s, const Endif& _endif)
{
s.active_ = true;
return s;
}
int main(int argc, const char* argv[])
{
xstream xs(std::cout);
xs << If(argc <= 1) << argc - 1 << _else << "none" << _endif << '\n';
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IElmIHsgSWYoYm9vbCBhY3RpdmUpIDogYWN0aXZlXyhhY3RpdmUpIHsgfSBib29sIGFjdGl2ZV87IH07CnN0cnVjdCBFbHNlIHsgfSBfZWxzZTsKc3RydWN0IEVuZGlmIHsgfSBfZW5kaWY7CgpjbGFzcyB4c3RyZWFtCnsKICBwdWJsaWM6CiAgICB4c3RyZWFtKHN0ZDo6b3N0cmVhbSYgb3MpIDogb3NfKG9zKSB7IH0KICAgIAogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICBmcmllbmQgeHN0cmVhbSYgb3BlcmF0b3I8PCh4c3RyZWFtJiBzLCBjb25zdCBUJiB0KQogICAgewogICAgCWlmIChzLmFjdGl2ZV8pIHMub3NfIDw8IHQ7CiAgICAJcmV0dXJuIHM7CiAgICB9CgogIHByaXZhdGU6CiAgICBib29sIGFjdGl2ZV87CiAgICBzdGQ6Om9zdHJlYW0mIG9zXzsKfTsKCnRlbXBsYXRlIDw+CnhzdHJlYW0mIG9wZXJhdG9yPDwgPElmPih4c3RyZWFtJiBzLCBjb25zdCBJZiYgX2lmKQp7CiAgICBzLmFjdGl2ZV8gPSBfaWYuYWN0aXZlXzsKICAgIHJldHVybiBzOwp9Cgp0ZW1wbGF0ZSA8Pgp4c3RyZWFtJiBvcGVyYXRvcjw8PEVsc2U+KHhzdHJlYW0mIHMsIGNvbnN0IEVsc2UmIF9lbHNlKQp7CiAgICBzLmFjdGl2ZV8gXj0gdHJ1ZTsKICAgIHJldHVybiBzOwp9Cgp0ZW1wbGF0ZSA8Pgp4c3RyZWFtJiBvcGVyYXRvcjw8PEVuZGlmPih4c3RyZWFtJiBzLCBjb25zdCBFbmRpZiYgX2VuZGlmKQp7CiAgICBzLmFjdGl2ZV8gPSB0cnVlOwogICAgcmV0dXJuIHM7Cn0KCgppbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQp7Cgl4c3RyZWFtIHhzKHN0ZDo6Y291dCk7Cgl4cyA8PCBJZihhcmdjIDw9IDEpIDw8IGFyZ2MgLSAxIDw8IF9lbHNlIDw8ICJub25lIiA8PCBfZW5kaWYgPDwgJ1xuJzsKfQ==