题目链接:https://codeforces.com/contest/22/problem/D
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
static const int MAXN=1e3+10;
struct Seg{
int l,r;
void input()
{
scanf("%d%d",&l,&r);
if(l>r) swap(l,r);
}
bool operator<(const Seg &b)const{
if(r==b.r) l<b.l;
return r<b.r;
}
}seg[MAXN];
bool vis[MAXN];
int n;
vector<int> v;
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
seg[i].input();
sort(seg,seg+n);
for(int i=0;i<n;i++)
{
if(vis[i]) continue;
v.push_back(seg[i].r);
vis[i]=true;
for(int j=i+1;j<n;j++)
{
if(vis[j]) continue;
if(seg[j].l<=seg[i].r && seg[i].r<=seg[j].r)
vis[j]=true;
}
}
printf("%d\n",v.size());
for(int i=0;i<v.size();i++)
printf("%d ",v[i]);
return 0;
}