#include <iostream>
#include <string>
#include <cctype>
class toogle_t
{};
constexpr toogle_t toogle;
struct toogled_ostream
{
std::ostream& os;
};
inline toogled_ostream operator << (std::ostream& os, toogle_t)
{
return { os };
}
template <typename T>
std::ostream& operator << (toogled_ostream tos, const T& v)
{
return tos.os << v;
}
std::ostream& operator << (toogled_ostream tos, char v)
{
char c = std::isupper(v) ? std::tolower(v)
: std::islower(v) ? std::toupper(v) : v;
return tos.os << c;
}
int main() {
std::cout << toogle << 'a' << 'A';
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8Y2N0eXBlPgoKY2xhc3MgdG9vZ2xlX3QKe307CmNvbnN0ZXhwciB0b29nbGVfdCB0b29nbGU7CnN0cnVjdCB0b29nbGVkX29zdHJlYW0KewoJc3RkOjpvc3RyZWFtJiBvczsKfTsKCmlubGluZSB0b29nbGVkX29zdHJlYW0gb3BlcmF0b3IgPDwgKHN0ZDo6b3N0cmVhbSYgb3MsIHRvb2dsZV90KQp7CglyZXR1cm4geyBvcyB9Owp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kc3RkOjpvc3RyZWFtJiBvcGVyYXRvciA8PCAodG9vZ2xlZF9vc3RyZWFtIHRvcywgY29uc3QgVCYgdikKewoJcmV0dXJuIHRvcy5vcyA8PCB2Owp9CnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3IgPDwgKHRvb2dsZWRfb3N0cmVhbSB0b3MsIGNoYXIgdikKewoJY2hhciBjID0gc3RkOjppc3VwcGVyKHYpID8gc3RkOjp0b2xvd2VyKHYpCgkgICAgICAgICAgICAgICAgICAgICAgICAgOiBzdGQ6OmlzbG93ZXIodikgPyBzdGQ6OnRvdXBwZXIodikgOiB2OwoJcmV0dXJuIHRvcy5vcyA8PCBjOwp9CgoKCgoKaW50IG1haW4oKSB7CglzdGQ6OmNvdXQgPDwgdG9vZ2xlIDw8ICdhJyA8PCAnQSc7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglyZXR1cm4gMDsKfQ==