#include <iostream>
#include <set>
#include <map>
typedef std::set<int,bool(*)(int,int)> Set;
typedef std::map<std::string, Set> Map;
bool f(int a, int b){ return a<b;}
bool g(int a, int b){ return a>b;}
int main() {
Map m;
m["f"] = Set(&f);
m["g"] = Set(&g);
for(int i = -5; i < 5; ++i) {
m["f"].insert(i);
m["g"].insert(i);
}
for(Set::iterator i = m["f"].begin(); i != m["f"].end(); ++i){std::cout << *i << " ";}
std::cout << "\n";
for(Set::iterator i = m["g"].begin(); i != m["g"].end(); ++i){std::cout << *i << " ";}
std::cout << "\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8bWFwPgoKdHlwZWRlZiBzdGQ6OnNldDxpbnQsYm9vbCgqKShpbnQsaW50KT4gU2V0Owp0eXBlZGVmIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBTZXQ+IE1hcDsKCmJvb2wgZihpbnQgYSwgaW50IGIpeyByZXR1cm4gYTxiO30KYm9vbCBnKGludCBhLCBpbnQgYil7IHJldHVybiBhPmI7fQoKaW50IG1haW4oKSB7Ck1hcCBtOwptWyJmIl0gPSBTZXQoJmYpOwptWyJnIl0gPSBTZXQoJmcpOwpmb3IoaW50IGkgPSAtNTsgaSA8IDU7ICsraSkgewoJbVsiZiJdLmluc2VydChpKTsKCW1bImciXS5pbnNlcnQoaSk7Cn0KZm9yKFNldDo6aXRlcmF0b3IgaSA9IG1bImYiXS5iZWdpbigpOyBpICE9IG1bImYiXS5lbmQoKTsgKytpKXtzdGQ6OmNvdXQgPDwgKmkgPDwgIiAiO30Kc3RkOjpjb3V0IDw8ICJcbiI7CmZvcihTZXQ6Oml0ZXJhdG9yIGkgPSBtWyJnIl0uYmVnaW4oKTsgaSAhPSBtWyJnIl0uZW5kKCk7ICsraSl7c3RkOjpjb3V0IDw8ICppIDw8ICIgIjt9CnN0ZDo6Y291dCA8PCAiXG4iOwpyZXR1cm4gMDsKfQ==