#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
using line_t = pair<int, int>;
vector<line_t> lines;
vector<line_t> solution;
void print( size_t i )
{
solution.push_back( lines[i] );
for( size_t j = i + 1; j < lines.size(); ++j ) {
if( lines[j].first >= lines[i].second ) {
print( j );
}
}
for( auto& p : solution ) {
cout << "[" << p.first << "-" << p.second << "] ";
}
cout << endl;
solution.pop_back();
}
int main() {
size_t n;
cin >> n;
lines.resize( n );
for( auto& p : lines ) {
cin >> p.first >> p.second;
}
sort( lines.begin(), lines.end() );
for( size_t i = 0; i < n; ++i ) {
print( i );
}
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnVzaW5nIGxpbmVfdCA9IHBhaXI8aW50LCBpbnQ+OwoKdmVjdG9yPGxpbmVfdD4gbGluZXM7CnZlY3RvcjxsaW5lX3Q+IHNvbHV0aW9uOwoKdm9pZCBwcmludCggc2l6ZV90IGkgKQp7Cglzb2x1dGlvbi5wdXNoX2JhY2soIGxpbmVzW2ldICk7CgkKCWZvciggc2l6ZV90IGogPSBpICsgMTsgaiA8IGxpbmVzLnNpemUoKTsgKytqICkgewoJCWlmKCBsaW5lc1tqXS5maXJzdCA+PSBsaW5lc1tpXS5zZWNvbmQgKSB7CgkJCXByaW50KCBqICk7CgkJfQoJfQoJCglmb3IoIGF1dG8mIHAgOiBzb2x1dGlvbiApIHsKCQljb3V0IDw8ICJbIiA8PCBwLmZpcnN0IDw8ICItIiA8PCBwLnNlY29uZCA8PCAiXSAiOwoJfQoJY291dCA8PCBlbmRsOwoJCglzb2x1dGlvbi5wb3BfYmFjaygpOwp9CgppbnQgbWFpbigpIHsKCXNpemVfdCBuOwoJY2luID4+IG47CgkKCWxpbmVzLnJlc2l6ZSggbiApOwoJZm9yKCBhdXRvJiBwIDogbGluZXMgKSB7CgkJY2luID4+IHAuZmlyc3QgPj4gcC5zZWNvbmQ7Cgl9Cglzb3J0KCBsaW5lcy5iZWdpbigpLCBsaW5lcy5lbmQoKSApOwoJCglmb3IoIHNpemVfdCBpID0gMDsgaSA8IG47ICsraSApIHsKCQlwcmludCggaSApOwoJfQp9