#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;
}