#include <iostream>
#include <iterator>
#include <algorithm>
template<typename InputIterator, typename OutputIterator, typename Key>
void perform_xor(InputIterator begin, InputIterator end, OutputIterator out, Key const &key) {
std::transform(begin, end, out, [key](auto &&value) {
return value ^ key;
});
}
using namespace std;
int main() {
char test[] = "(2*&.8\"\'*";
perform_xor(begin(test), end(test), begin(test), '&');
copy(begin(test), end(test), ostream_iterator<int>(cout, " "));
cout << endl;
perform_xor(begin(test), end(test), begin(test), '&');
copy(begin(test), end(test), ostream_iterator<char>(cout));
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxhbGdvcml0aG0+Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgS2V5Pgp2b2lkIHBlcmZvcm1feG9yKElucHV0SXRlcmF0b3IgYmVnaW4sIElucHV0SXRlcmF0b3IgZW5kLCBPdXRwdXRJdGVyYXRvciBvdXQsIEtleSBjb25zdCAma2V5KSB7CglzdGQ6OnRyYW5zZm9ybShiZWdpbiwgZW5kLCBvdXQsIFtrZXldKGF1dG8gJiZ2YWx1ZSkgeyAKCQlyZXR1cm4gdmFsdWUgXiBrZXk7Cgl9KTsKfQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewoJY2hhciB0ZXN0W10gPSAiKDIqJi44XCJcJyoiOwoKCXBlcmZvcm1feG9yKGJlZ2luKHRlc3QpLCBlbmQodGVzdCksIGJlZ2luKHRlc3QpLCAnJicpOwoJY29weShiZWdpbih0ZXN0KSwgZW5kKHRlc3QpLCBvc3RyZWFtX2l0ZXJhdG9yPGludD4oY291dCwgIiAiKSk7IAoJCgljb3V0IDw8IGVuZGw7CgkKCXBlcmZvcm1feG9yKGJlZ2luKHRlc3QpLCBlbmQodGVzdCksIGJlZ2luKHRlc3QpLCAnJicpOwoJY29weShiZWdpbih0ZXN0KSwgZW5kKHRlc3QpLCBvc3RyZWFtX2l0ZXJhdG9yPGNoYXI+KGNvdXQpKTsgCgkKCXJldHVybiAwOwp9