#include <bits/stdc++.h>   bool local = false;   using namespace std;   template <class T>   string toString(T x) {     ostringstream sout;     sout << x;     return sout.str();   }   template <class T>   void print(T v) {     cout << ((int)(v).size()) <<   n ;     for (auto x : v) cout << x <<    ;     cout <<   n ;   };   template <class T>   void print1(T v) {     cout << ((int)(v).size()) <<   n ;     for (auto x : v) cout << x + 1 <<    ;     cout <<   n ;   };   template <class T1, class T2>   ostream &operator<<(ostream &o, pair<T1, T2> x) {     return o << x.first <<     << x.second;   }   template <class T1, class T2>   istream &operator>>(istream &o, pair<T1, T2> &x) {     return o >> x.first >> x.second;   }   template <class T1, class T2>   pair<T1, T2> operator+(pair<T1, T2> a, pair<T1, T2> b) {     a.first += b.first;     a.second += b.second;     return a;   }   template <class T1, class T2>   pair<T1, T2> operator-(pair<T1, T2> a, pair<T1, T2> b) {     a.first -= b.first;     a.second -= b.second;     return a;   }   template <class T1, class T2>   void operator+=(pair<T1, T2> &a, pair<T1, T2> b) {     a.first += b.first;     a.second += b.second;   }   template <class T1, class T2>   void operator-=(pair<T1, T2> &a, pair<T1, T2> b) {     a.first -= b.first;     a.second -= b.second;   }   int nint() {     int x;     cin >> x;     return x;   }   double getTime() { return clock() / (double)CLOCKS_PER_SEC; };   mt19937 rnd(0);   int rand(int n) { return rnd() % n; }   int rand(int l, int r) { return rnd() % (r - l + 1) + l; }   const int mod = 1000000000 + 7;   void initIO() {     if (local) {       freopen( input.txt ,  r , stdin);       srand((int)time(0));       rnd.seed((int)time(0));     } else {     }     {       ios::sync_with_stdio(0);       cin.tie(0);       cout.tie(0);     };   }   void solve();   int main() {     initIO();     int tc = 1;     for (int tt = 0; tt < (tc); tt++) {       solve();     }     if (local)       cout <<   n             <<  time =   << getTime() <<   n ;   }   int n;   int m;   vector<int> v1, v2;   pair<int, int> val[300500];   bool f1(int a, int b) { return val[a].second > val[b].second; }   bool f2(int a, int b) { return val[a].second < val[b].second; }   void solve() {     cin >> n;     for (int i = 0; i < (n); i++) {       pair<int, int> o;       cin >> o;       val[i] = o;       if (o.first > o.second)         v2.emplace_back(i);       else         v1.emplace_back(i);     }     sort(v1.begin(), v1.end(), f1);     sort(v2.begin(), v2.end(), f2);     if (((int)(v1).size()) > ((int)(v2).size()))       print1(v1);     else       print1(v2);   }   