#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, int 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 k = v2[j].size() - 1; for(int a : v2[i]){ while(k >= 0 && v2[j][k] > a + dist) -- k; if(k >= 0){ 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; }