#include<bits/stdc++.h>
#define ll long long
struct PickTheorem
{
vector< pair<ll, ll> > vertex;
int n_vertices;
PickTheorem (vector< pair<ll, ll> > &vertex_) {
vertex = vertex_;
n_vertices = vertex.size();
vertex.push_back(vertex[0]);
}
double getArea() {
double area = 0;
for (int i = 0; i < n_vertices; ++i) {
area += vertex[i].first * vertex[i+1].second - vertex[i].second * vertex[i+1].first;
}
area = 1./2. * fabs(area);
return area;
}
ll getPointsInEdges() {
ll n_point = 0;
for (int i = 0; i < n_vertices; ++i) {
n_point += abs(__gcd(vertex[i].first - vertex[i+1].first, vertex[i].second - vertex[i+1].second));
}
return n_point;
}
ll getPointsInside() {
// S = I + B/2 -1
ll n_point = 0;
double area = getArea();
ll pointsInBoundary = getPointsInEdges();
ll pointsInside = (area - pointsInBoundary / 2. + 1) + 0.5;
return pointsInside;
}
};