#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct compareFirstPairMember {
bool operator()(const pair<int, int>& a, const pair<int, int>& b) const {
return a.first < b.first;
}
};
int main() {
vector<pair<int, int>> v;
v.push_back(pair<int,int>(3,600));
v.push_back(pair<int,int>(2,900));
v.push_back(pair<int,int>(2,800));
sort(v.begin(), v.end(), compareFirstPairMember());
do {
for(auto item : v)
cout << item.first << " " << item.second << endl;
cout << endl;
} while ( std::next_permutation(begin(v), end(v), [](const pair<int, int>& a, const pair<int, int>& b) { return a.first < b.first; }));
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBjb21wYXJlRmlyc3RQYWlyTWVtYmVyIHsKICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBwYWlyPGludCwgaW50PiYgYSwgY29uc3QgcGFpcjxpbnQsIGludD4mIGIpIGNvbnN0IHsKICAgICAgICByZXR1cm4gYS5maXJzdCA8IGIuZmlyc3Q7CiAgICB9Cn07CgppbnQgbWFpbigpIHsKCQoJdmVjdG9yPHBhaXI8aW50LCBpbnQ+PiB2OwoJdi5wdXNoX2JhY2socGFpcjxpbnQsaW50PigzLDYwMCkpOwogICAgdi5wdXNoX2JhY2socGFpcjxpbnQsaW50PigyLDkwMCkpOwogICAgdi5wdXNoX2JhY2socGFpcjxpbnQsaW50PigyLDgwMCkpOwoJCglzb3J0KHYuYmVnaW4oKSwgdi5lbmQoKSwgY29tcGFyZUZpcnN0UGFpck1lbWJlcigpKTsKCQoJZG8gewoJCWZvcihhdXRvIGl0ZW0gOiB2KQogICAgICAgICAgY291dCA8PCBpdGVtLmZpcnN0IDw8ICIgIiA8PCBpdGVtLnNlY29uZCA8PCBlbmRsOwogICAgICAgIGNvdXQgPDwgZW5kbDsKICAgIH0gd2hpbGUgKCBzdGQ6Om5leHRfcGVybXV0YXRpb24oYmVnaW4odiksIGVuZCh2KSwgW10oY29uc3QgcGFpcjxpbnQsIGludD4mIGEsIGNvbnN0IHBhaXI8aW50LCBpbnQ+JiBiKSB7IHJldHVybiBhLmZpcnN0IDwgYi5maXJzdDsgfSkpOwoJCglyZXR1cm4gMDsKfQ==