#include <iostream>
#define myswap(a, b) do { (a) ^= (b); (b) ^= (a); (a) ^= (b); } while(0)
template<typename T> void myswap2(T &a, T &b) {
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
int main() {
int a = 3, b = 5;
std::cout << "a = " << a << ", b = " << b << std::endl;
myswap(a, b);
std::cout << "a = " << a << ", b = " << b << std::endl;
a = 4;
std::cout << "a = " << a << std::endl;
myswap(a, a);
std::cout << "a = " << a << std::endl;
return 0;
}
/* end */
I2luY2x1ZGUgPGlvc3RyZWFtPgoKI2RlZmluZSBteXN3YXAoYSwgYikgZG8geyAoYSkgXj0gKGIpOyAoYikgXj0gKGEpOyAoYSkgXj0gKGIpOyB9IHdoaWxlKDApCgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIG15c3dhcDIoVCAmYSwgVCAmYikgewogIGEgPSBhIF4gYjsKICBiID0gYSBeIGI7CiAgYSA9IGEgXiBiOwp9CgppbnQgbWFpbigpIHsKICBpbnQgYSA9IDMsIGIgPSA1OwogIHN0ZDo6Y291dCA8PCAiYSA9ICIgPDwgYSA8PCAiLCBiID0gIiA8PCBiIDw8IHN0ZDo6ZW5kbDsKICBteXN3YXAoYSwgYik7CiAgc3RkOjpjb3V0IDw8ICJhID0gIiA8PCBhIDw8ICIsIGIgPSAiIDw8IGIgPDwgc3RkOjplbmRsOwogIGEgPSA0OwogIHN0ZDo6Y291dCA8PCAiYSA9ICIgPDwgYSA8PCBzdGQ6OmVuZGw7CiAgbXlzd2FwKGEsIGEpOwogIHN0ZDo6Y291dCA8PCAiYSA9ICIgPDwgYSA8PCBzdGQ6OmVuZGw7CiAgcmV0dXJuIDA7Cn0KLyogZW5kICovCg==