#include <iostream>
#include <vector>
#include <string>
using namespace std;
void PrintArrays (const std::vector<std::vector<std::string>> items)
{
vector<int> indices;
int n = items.size();
indices.resize(items.size(),0);
while (true) //Iterate until we've used all of the last array of items
{
//Print
for (int i = 0; i < n; ++i)
{
cout << items[i][indices[i]] << " ";
}
cout << endl;
//Update to the next indice
for (int i = n - 1; i >= 0; --i)
{
indices[i] = (indices[i] + 1) % items[i].size();
if (indices[i] != 0)
{
break;
}
else if (indices[i] == 0 && i == 0)
{
return; //Escape.
}
}
}
}
int main() {
vector<vector<string>> lists;
lists.resize(4);
lists[0].push_back("AA");
lists[0].push_back("BB");
lists[1].push_back("CC");
lists[2].push_back("DD");
lists[2].push_back("EE");
lists[2].push_back("FF");
lists[3].push_back("GG");
PrintArrays(lists);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCnZvaWQgUHJpbnRBcnJheXMgKGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPj4gaXRlbXMpCnsKICAgIHZlY3RvcjxpbnQ+IGluZGljZXM7CiAgICBpbnQgbiA9IGl0ZW1zLnNpemUoKTsKICAgICAgICBpbmRpY2VzLnJlc2l6ZShpdGVtcy5zaXplKCksMCk7CiAgICAgICAgCiAgICAgICAgd2hpbGUgKHRydWUpIC8vSXRlcmF0ZSB1bnRpbCB3ZSd2ZSB1c2VkIGFsbCBvZiB0aGUgbGFzdCBhcnJheSBvZiBpdGVtcwogICAgICAgIHsKICAgICAgICAgICAgICAgIC8vUHJpbnQKICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBjb3V0IDw8IGl0ZW1zW2ldW2luZGljZXNbaV1dIDw8ICIgIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvdXQgPDwgZW5kbDsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy9VcGRhdGUgdG8gdGhlIG5leHQgaW5kaWNlCiAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gbiAtIDE7IGkgPj0gMDsgLS1pKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzW2ldID0gKGluZGljZXNbaV0gKyAxKSAlIGl0ZW1zW2ldLnNpemUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGljZXNbaV0gIT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGluZGljZXNbaV0gPT0gMCAmJiBpID09IDApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsgLy9Fc2NhcGUuCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCn0KIAppbnQgbWFpbigpIHsKICAgICAgICAKICAgIHZlY3Rvcjx2ZWN0b3I8c3RyaW5nPj4gbGlzdHM7CiAgICAKICAgIAogICAgbGlzdHMucmVzaXplKDQpOwogICAgbGlzdHNbMF0ucHVzaF9iYWNrKCJBQSIpOwogICAgbGlzdHNbMF0ucHVzaF9iYWNrKCJCQiIpOwogICAgbGlzdHNbMV0ucHVzaF9iYWNrKCJDQyIpOwogICAgbGlzdHNbMl0ucHVzaF9iYWNrKCJERCIpOwogICAgbGlzdHNbMl0ucHVzaF9iYWNrKCJFRSIpOwogICAgbGlzdHNbMl0ucHVzaF9iYWNrKCJGRiIpOwogICAgbGlzdHNbM10ucHVzaF9iYWNrKCJHRyIpOwogICAgCiAgICBQcmludEFycmF5cyhsaXN0cyk7CiAgICAKICAgICAgICByZXR1cm4gMDsKfQ==