#include <iostream>
#include <map>
#include <set>
#include <algorithm>
using namespace std;
template<typename K>
struct KF {
K&& k;
template <typename V>
friend bool operator==(const typename std::pair<const K, V>& pair, const KF<K>& o) {
return pair.first == o.k;
}
};
template <typename K>
KF<K> keyFinder(K&& k) { return KF<K>{ std::forward<K>(k) }; }
int main() {
std::set<int> s{ 1, 2, };
cout << (std::find(s.begin(), s.end(), 1) == s.end()) << endl; // => 0
cout << (std::find(s.begin(), s.end(), 3) == s.end()) << endl; // => 1
std::map<int, int> m{ {1,10}, {2,20}, };
cout << (std::find(m.begin(), m.end(), keyFinder(1)) == m.end()) << endl; // => 0
cout << (std::find(m.begin(), m.end(), keyFinder(3)) == m.end()) << endl; // => 1
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlPHR5cGVuYW1lIEs+CnN0cnVjdCBLRiB7CiAgICBLJiYgazsKCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVj4KICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgdHlwZW5hbWUgc3RkOjpwYWlyPGNvbnN0IEssIFY+JiBwYWlyLCBjb25zdCBLRjxLPiYgbykgewogICAgICAgIHJldHVybiBwYWlyLmZpcnN0ID09IG8uazsKICAgIH0KCn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgSz4KS0Y8Sz4ga2V5RmluZGVyKEsmJiBrKSB7IHJldHVybiBLRjxLPnsgc3RkOjpmb3J3YXJkPEs+KGspIH07IH0KCmludCBtYWluKCkgewogICAgc3RkOjpzZXQ8aW50PiBzeyAxLCAyLCB9OwogICAgY291dCA8PCAoc3RkOjpmaW5kKHMuYmVnaW4oKSwgcy5lbmQoKSwgMSkgPT0gcy5lbmQoKSkgPDwgZW5kbDsgLy8gPT4gMAogICAgY291dCA8PCAoc3RkOjpmaW5kKHMuYmVnaW4oKSwgcy5lbmQoKSwgMykgPT0gcy5lbmQoKSkgPDwgZW5kbDsgLy8gPT4gMQoKICAgIHN0ZDo6bWFwPGludCwgaW50PiBteyB7MSwxMH0sIHsyLDIwfSwgfTsKICAgIGNvdXQgPDwgKHN0ZDo6ZmluZChtLmJlZ2luKCksIG0uZW5kKCksIGtleUZpbmRlcigxKSkgPT0gbS5lbmQoKSkgPDwgZW5kbDsgLy8gPT4gMAogICAgY291dCA8PCAoc3RkOjpmaW5kKG0uYmVnaW4oKSwgbS5lbmQoKSwga2V5RmluZGVyKDMpKSA9PSBtLmVuZCgpKSA8PCBlbmRsOyAvLyA9PiAxCn0=