#include <unordered_map>
#include <vector>
#include <bitset>
#include <string>
#include <utility>
 
 
 struct IntTriple
 {
	int a, b, c;
	
	IntTriple(int a = 0, int b = 0, int c = 0)
		: a(a), b(b), c(c)
	{ }
	
	bool operator==(IntTriple const& oth) const
	{
		return this->a == oth.a && this->b == oth.b && this->c == oth.c;
	}
 };
 
 
struct IntTripleHash {
	std::size_t operator()(const IntTriple& k) const
	{
		return k.a + k.b + k.c;
		//return k.a + 100*k.b + 10000*k.c
		// hier bessere Funktionen bauen
	}
};
 
int main()
{
    std::unordered_map<IntTriple, std::string, IntTripleHash> l1;
	
	l1[IntTriple(1, 2, 3)] = "abc";
	l1[IntTriple(1, 2, 5)] = "cbde";
}