#include <iostream>
#include <iomanip>
#include <map>
using namespace std;
struct Key
{
int value, id;
};
bool operator <(const Key& a, const Key& b)
{
return a.value < b.value;
}
int main(int argc, const char * argv[])
{
multimap<Key,int> m;
m.insert(make_pair(Key{1,1},11));
m.insert(make_pair(Key{1,2},12));
m.insert(make_pair(Key{1,3},13));
m.insert(make_pair(Key{2,1},21));
m.insert(make_pair(Key{2,2},22));
m.insert(make_pair(Key{2,3},23));
for(auto x: m)
cout << x.first.value << ":" << x.first.id
<< " " << x.second << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPG1hcD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgS2V5CnsKICAgIGludCB2YWx1ZSwgaWQ7Cn07Cgpib29sIG9wZXJhdG9yIDwoY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIpCnsKICAgIHJldHVybiBhLnZhbHVlIDwgYi52YWx1ZTsKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiBhcmd2W10pCnsKICAgIG11bHRpbWFwPEtleSxpbnQ+IG07CiAgICBtLmluc2VydChtYWtlX3BhaXIoS2V5ezEsMX0sMTEpKTsKICAgIG0uaW5zZXJ0KG1ha2VfcGFpcihLZXl7MSwyfSwxMikpOwogICAgbS5pbnNlcnQobWFrZV9wYWlyKEtleXsxLDN9LDEzKSk7CiAgICBtLmluc2VydChtYWtlX3BhaXIoS2V5ezIsMX0sMjEpKTsKICAgIG0uaW5zZXJ0KG1ha2VfcGFpcihLZXl7MiwyfSwyMikpOwogICAgbS5pbnNlcnQobWFrZV9wYWlyKEtleXsyLDN9LDIzKSk7CgogICAgZm9yKGF1dG8geDogbSkKICAgICAgICBjb3V0IDw8IHguZmlyc3QudmFsdWUgPDwgIjoiIDw8IHguZmlyc3QuaWQKICAgICAgICAgICAgPDwgIiAgICIgPDwgeC5zZWNvbmQgPDwgZW5kbDsKfQo=