#include <iostream>
#include <vector>
using namespace std;
long long nwd(long long a,long long b)
{
while(b)
{
a%=b;
swap(a,b);
}
return a;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int liczbaSlupkow;
if(!(cin>>liczbaSlupkow)) return 0;
vector<long long> iksy(liczbaSlupkow);
vector<long long> igreki(liczbaSlupkow);
for(int i=0; i<liczbaSlupkow; i++)
{
cin>>iksy[i]>>igreki[i];
}
long long poleDwa=0;
long long punktyBrzegowe=0;
for(int i=0; i<liczbaSlupkow; i++)
{
int nastepny=(i+1)%liczbaSlupkow;
poleDwa+=iksy[i]*igreki[nastepny]-igreki[i]*iksy[nastepny];
long long dx=abs(iksy[nastepny]-iksy[i]);
long long dy=abs(igreki[nastepny]-igreki[i]);
punktyBrzegowe+=nwd(dx,dy);
}
if(poleDwa<0) poleDwa=-poleDwa;
long long punktyWewnetrzne=(poleDwa-punktyBrzegowe+2)/2;
cout<<punktyWewnetrzne<<"\n";
return 0;
}