#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int solve(const vector& v, long long dist) { if(dist == 0) return 0; if(find(v.begin(), v.end(), dist) != v.end()) return 1; vector > v2(2); for(int a : v) v2[a%2].push_back(a); for(int i=0; i<2; ++i) sort(v2[i].begin(), v2[i].end()); for(int i=0; i<2; ++i){ int j = (dist - i) % 2; int n = v2[j].size(); if(n == 0) continue; int k = 0; for(int a : v2[i]){ while(k < n-1 && v2[j][k+1] <= a + dist) ++ k; int b = v2[j][k]; if(dist <= a + b && abs(a - b) <= dist) return 2; } } return -1; } int main() { int n; cin >> n; vector v(n); for(int i=0; i> v[i]; int x, y; cin >> x >> y; int dist = abs(x) + abs(y); cout << solve(v, dist) << endl; return 0; }