#include <bits/stdc++.h>
using namespace std;
int main() {
  vector<pair<int, int> > a;
  vector<set<int> > res;
  set<int> tmp;
  vector<int> out;
  int n;
  scanf("%d", &n);
  a.resize(2 * n);
  for (int i = 0; i < n; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    if (x > y) swap(x, y);
    a[i * 2].first = x;
    a[i * 2].second = i + 1;
    a[i * 2 + 1].first = y;
    a[i * 2 + 1].second = -1 * (i + 1);
  }
  sort(a.begin(), a.end());
  for (int i = 0; i < a.size(); i++) {
    if (a[i].second < 0)
      tmp.erase(-1 * (a[i].second + 1));
    else {
      tmp.insert(a[i].second - 1);
      if (tmp.size() > 2) {
        puts("0");
        return 0;
      }
      if (tmp.size() == 2) res.push_back(tmp);
    }
  }
  if (res.size() == 0) {
    printf("%d\n", n);
    for (int i = 0; i < n; i++) printf("%d ", i + 1);
    return 0;
  }
  if (res.size() == 1) {
    puts("2");
    for (set<int>::iterator it = res.back().begin(); it != res.back().end();
         it++)
      printf("%d ", *it + 1);
    return 0;
  }
  int big = -1;
  for (int i = 0; i < n; i++) {
    int count = 0;
    for (int j = 0; j < res.size(); j++)
      if (res[j].count(i)) count++;
    if (count == res.size()) {
      big = i;
      break;
    }
  }
  if (big == -1) {
    puts("0");
    return 0;
  }
  puts("1");
  printf("%d", big + 1);
  return 0;
}
