#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; int oddMax = -1; int evenMax = -1; for(int a : v){ if(a % 2 == 0) evenMax = max(evenMax, a); else oddMax = max(oddMax, a); } if(dist % 2 == 0){ if(dist <= max(evenMax, oddMax) * 2) return 2; } else{ if(oddMax != -1 && evenMax != -1 && dist <= oddMax + evenMax) 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; }