#include <map>
#include <string>
#include <vector>
#include <iostream>
#include <stdexcept>
#include <cstdlib>
int main () {
using std::map;
using std::vector;
using std::string;
using std::cout;
using std::endl;
using std::exception;
using std::exit;
map<int,vector<string> > backofflist;
backofflist[1].push_back("hello");
backofflist[1].push_back("world");
backofflist[5].push_back("goodbye");
for (int k = backofflist.size(); k > 0; k--) // for ($i=$#backofflist;$i>0;$i--)
{
vector<string>::iterator backofflist_iter;
int i = 0;
for (backofflist_iter=backofflist[k].begin();
backofflist_iter!=backofflist[k].end();
backofflist_iter++) // foreach $x (@($backofflist[$i]))
{
cout << i++ << endl;
string x;
try
{
x = *backofflist_iter; //foreach $x (@{$backofflist[$i]})
}
catch (exception &e)
{
cout << e.what() << endl;
exit(1);
}
}
}
}
I2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RkZXhjZXB0PgojaW5jbHVkZSA8Y3N0ZGxpYj4KCmludCBtYWluICgpIHsKICAgIHVzaW5nIHN0ZDo6bWFwOwogICAgdXNpbmcgc3RkOjp2ZWN0b3I7CiAgICB1c2luZyBzdGQ6OnN0cmluZzsKICAgIHVzaW5nIHN0ZDo6Y291dDsKICAgIHVzaW5nIHN0ZDo6ZW5kbDsKICAgIHVzaW5nIHN0ZDo6ZXhjZXB0aW9uOwogICAgdXNpbmcgc3RkOjpleGl0OwoKICAgIG1hcDxpbnQsdmVjdG9yPHN0cmluZz4gPiBiYWNrb2ZmbGlzdDsKCiAgICBiYWNrb2ZmbGlzdFsxXS5wdXNoX2JhY2soImhlbGxvIik7CiAgICBiYWNrb2ZmbGlzdFsxXS5wdXNoX2JhY2soIndvcmxkIik7CiAgICBiYWNrb2ZmbGlzdFs1XS5wdXNoX2JhY2soImdvb2RieWUiKTsKCiAgICBmb3IgKGludCBrID0gYmFja29mZmxpc3Quc2l6ZSgpOyBrID4gMDsgay0tKSAvLyBmb3IgKCRpPSQjYmFja29mZmxpc3Q7JGk+MDskaS0tKQogICAgewoJdmVjdG9yPHN0cmluZz46Oml0ZXJhdG9yIGJhY2tvZmZsaXN0X2l0ZXI7CglpbnQgaSA9IDA7Cglmb3IgKGJhY2tvZmZsaXN0X2l0ZXI9YmFja29mZmxpc3Rba10uYmVnaW4oKTsKCSAgICBiYWNrb2ZmbGlzdF9pdGVyIT1iYWNrb2ZmbGlzdFtrXS5lbmQoKTsKCSAgICBiYWNrb2ZmbGlzdF9pdGVyKyspIC8vIGZvcmVhY2ggJHggKEAoJGJhY2tvZmZsaXN0WyRpXSkpCgl7CgkgICAgY291dCA8PCBpKysgPDwgZW5kbDsKCSAgICBzdHJpbmcgeDsKCSAgICB0cnkKCSAgICB7CgkJeCA9ICpiYWNrb2ZmbGlzdF9pdGVyOyAvL2ZvcmVhY2ggJHggKEB7JGJhY2tvZmZsaXN0WyRpXX0pCgkgICAgfQoJICAgIGNhdGNoIChleGNlcHRpb24gJmUpCgkgICAgewoJCWNvdXQgPDwgZS53aGF0KCkgPDwgZW5kbDsKCQlleGl0KDEpOwoJICAgIH0KICAgICAgICB9CiAgICB9Cn0K