#include <vector>
#include <iostream>
#include <algorithm>
#include <initializer_list>
struct flag {
bool set = false;
template <class T> void operator=(const T&) { set = true; }
flag& operator++() { return *this; }
flag& operator*() { return *this; }
};
template <class CLeft, class CRight>
bool intersects(const CLeft& lhs, const CRight& rhs) {
flag f;
return std::set_intersection(lhs.begin(), lhs.end(), rhs.begin(), rhs.end(), f).set;
}
bool check(const std::vector<int>& lhs, const std::vector<int>& rhs) {
return intersects(lhs, rhs);
}
int main() {
std::cout << std::boolalpha;
std::cout << "{1, 2} ∩ {3, 4} ? " << check({1, 2}, {3, 4}) << "\n";
std::cout << "{1, 2} ∩ {0, 2} ? " << check({1, 2}, {0, 2}) << "\n";
std::cout << "{} ∩ {} ? " << check({}, {}) << "\n";
std::cout << "{1, 2} ∩ {} ? " << check({1, 2}, {}) << "\n";
std::cout << "{1} ∩ {1} ? " << check({1}, {1}) << "\n";
return 0;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KCnN0cnVjdCBmbGFnIHsKICBib29sIHNldCA9IGZhbHNlOwogIHRlbXBsYXRlIDxjbGFzcyBUPiB2b2lkIG9wZXJhdG9yPShjb25zdCBUJikgeyBzZXQgPSB0cnVlOyB9CiAgZmxhZyYgb3BlcmF0b3IrKygpIHsgcmV0dXJuICp0aGlzOyB9CiAgZmxhZyYgb3BlcmF0b3IqKCkgIHsgcmV0dXJuICp0aGlzOyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgQ0xlZnQsIGNsYXNzIENSaWdodD4KYm9vbCBpbnRlcnNlY3RzKGNvbnN0IENMZWZ0JiBsaHMsIGNvbnN0IENSaWdodCYgcmhzKSB7CiAgZmxhZyBmOwogIHJldHVybiBzdGQ6OnNldF9pbnRlcnNlY3Rpb24obGhzLmJlZ2luKCksIGxocy5lbmQoKSwgcmhzLmJlZ2luKCksIHJocy5lbmQoKSwgZikuc2V0Owp9Cgpib29sIGNoZWNrKGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIGxocywgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgcmhzKSB7CiAgcmV0dXJuIGludGVyc2VjdHMobGhzLCByaHMpOwp9CgppbnQgbWFpbigpIHsKICBzdGQ6OmNvdXQgPDwgc3RkOjpib29sYWxwaGE7CiAgc3RkOjpjb3V0IDw8ICJ7MSwgMn0g4oipIHszLCA0fSA/ICIgPDwgY2hlY2soezEsIDJ9LCB7MywgNH0pIDw8ICJcbiI7CiAgc3RkOjpjb3V0IDw8ICJ7MSwgMn0g4oipIHswLCAyfSA/ICIgPDwgY2hlY2soezEsIDJ9LCB7MCwgMn0pIDw8ICJcbiI7CiAgc3RkOjpjb3V0IDw8ICJ7fSDiiKkge30gPyAiIDw8IGNoZWNrKHt9LCB7fSkgPDwgIlxuIjsKICBzdGQ6OmNvdXQgPDwgInsxLCAyfSDiiKkge30gPyAiIDw8IGNoZWNrKHsxLCAyfSwge30pIDw8ICJcbiI7CiAgc3RkOjpjb3V0IDw8ICJ7MX0g4oipIHsxfSA/ICIgPDwgY2hlY2soezF9LCB7MX0pIDw8ICJcbiI7CiAgcmV0dXJuIDA7Cn0=