#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;
}