func_code_string: #include <bits/stdc++.h>   using namespace std;   template <typename T>   inline bool chmax(T& a, T b) {     if (a < b) {       a = b;       return true;     }     return false;   }   template <typename T>   inline bool chmin(T& a, T b) {     if (a > b) {       a = b;       return true;     }     return false;   }   const double EPS = 1e-10;   const double PI = acos(-1);   class EDividePoints {    public:     int N;     void rec(std::ostream& out, vector<pair<int, int>>& vec) {       vector<vector<int>> par(2);       for (int i = (0); i < (N); ++i)         par[((vec[i].first + vec[i].second) % 2 + 2) % 2].push_back(i + 1);       if (not par[0].empty() and (int)(par[0]).size() < N) {         out << (int)(par[0]).size() <<   n ;         for (auto u : par[0]) out << u <<    ;         out <<   n ;         return;       }       vector<vector<vector<int>>> ids(2, vector<vector<int>>(2));       for (int i = (0); i < (N); ++i) {         ids[(vec[i].first % 2 + 2) % 2][(vec[i].second % 2 + 2) % 2].push_back(i +                                                                                1);       }       for (int i = (0); i < (2); ++i)         for (int j = (0); j < (2); ++j)           if (not ids[i][j].empty() and (int)(ids[i][j]).size() < N) {             out << (int)(ids[i][j]).size() <<   n ;             for (auto u : ids[i][j]) out << u <<    ;             out <<   n ;             return;           }       for (int i = (0); i < (N); ++i) {         if (vec[i].first % 2) vec[i].first--;         if (vec[i].second % 2) vec[i].second--;         vec[i].first /= 2, vec[i].second /= 2;       }       rec(out, vec);     }     void solve(std::istream& in, std::ostream& out) {       ios_base::sync_with_stdio(false);       in.tie(nullptr), out.tie(nullptr);       in >> N;       vector<pair<int, int>> A(N);       for (int i = (0); i < (N); ++i) in >> A[i].first >> A[i].second;       rec(out, A);     }   };   int main() {     EDividePoints solver;     std::istream& in(std::cin);     std::ostream& out(std::cout);     solver.solve(in, out);     return 0;   }   