#include<map>
#include<set>
#include<queue>
#include<stack>
#include<deque>
#include<vector>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define rep(x) for (int i=0;i<x;i++)
#define repc(c) for (typeof(c.begin()) i=c.begin();i!=c.end();i++)
#define pb push_back
struct test
{
int x,y;
bool operator <(const test& other) const
{
return x<other.x || (x==other.x && y<other.y);
}
bool operator ==(const test& other) const
{
return x==other.x && y==other.y;
}
};
test a[1000];
vector<test> v;
set<test> s;
priority_queue<test> q;
map<test,int> m;
int n,idx;
void input()
{
scanf("%d\n",&n);
rep(n) scanf("%d %d\n",&a[i].x,&a[i].y);
}
void output()
{
rep(n) printf("%d %d\n",a[i].x,a[i].y);
printf("-------\n");
}
int main()
{
freopen("test.in","r",stdin);
freopen("test.out","w",stdout);
input();
/*------sort------*/
/*
sort(a,a+n);
output();
*/
/*------vector------*/
/*
rep(n) v.pb(a[i]);
repc(v) printf("%d %d\n",i->x,i->y);
*/
/*------priority_queue------*/
/*
rep(n) q.push(a[i]);
while (!q.empty())
{
printf("%d %d\n",q.top().x,q.top().y);
q.pop();
}
*/
/*------set------*/
/*
rep(n) s.insert(a[i]);
repc(s) printf("%d %d\n",i->x,i->y);
*/
/*------map------*/
/*
idx=0;
rep(n) if (m[a[i]]==0) m[a[i]]=++idx;
rep(n) printf("%d\n",m[a[i]]);
*/
return 0;
}