#include <bits/stdc++.h>
using namespace std;
int have[25000];
struct node {
  int l, r;
};
node ar[1005];
bool operator<(node pp, node qq) {
  if (pp.l == qq.l) return pp.r < qq.r;
  return pp.l < qq.l;
}
vector<int> ans;
int main() {
  int n, i, l, r, j;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) {
    scanf("%d %d", &l, &r);
    l += 10050;
    r += 10050;
    if (l > r) swap(l, r);
    ar[i].l = l, ar[i].r = r;
    have[r]++;
  }
  sort(ar + 1, ar + n + 1);
  int s = 1;
  for (i = 1; i <= 24000; i++) {
    if (have[i]) {
      ans.push_back(i);
      for (j = s; j <= n; j++) {
        if (ar[j].l <= i && ar[j].r >= i) {
          have[ar[j].r]--;
          ;
          s = j + 1;
        }
      }
    }
  }
  printf("%d\n", ans.size());
  for (i = 0; i < ans.size(); i++) printf("%d ", ans[i] - 10050);
}
