#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<string>
#include<vector>
#include<deque>
#include<set>
#include<map>
#include<utility>
#include<string.h>
#include<stdio.h>

using namespace std;

#define PB push_back()
#define SZ(x) ((int)x.size())
#define PI 3.141592653589
#define REP(i,N) for(int(i)=0;(i)<(int)(N);++(i))
#define pii pair<int,int>
#define fi first
#define se second

int N;

pii X[200];
int zle[250][250];

void invalid(int x,int y)
{
	zle[x+105][y+105]=1;
}

int zly(int x,int y)
{
	return zle[x+105][y+105];
}

int ccw(pii a,pii b,pii c)
{
	int ret= (b.fi-a.fi)*(c.se-a.se)-(b.se-a.se)*(c.fi-a.fi);
	if (ret>0) return 1;
	if (ret==0) return ret;
	return -1;
}

int min(int a,int b)
{
	if (a>b) return b;
	return a;
}

int max(int a,int b)
{
	if (a>b) return a;
	return b;
}

int pretina(pii ax,pii ay,pii bx,pii by)
{
	if (ccw(ax,ay,bx)!=ccw(ax,ay,by)||ccw(ax,ay,by)==0||ccw(ax,ay,bx)==0)
	{
		if (ccw(bx,by,ax)!=ccw(bx,by,ay)||ccw(bx,by,ay)==0||ccw(bx,by,ax)==0)
		{
			//cout<<ax.fi<<" "<<ax.se<<" - "<<ay.fi<<" "<<ay.se<<" x "<<bx.fi<<" "<<bx.se<<" - "<<by.fi<<" "<<by.se<<endl;
			return 1;
		}
	}
	return 0;
}

int vnutri(int x,int y)
{
	if (zly(x,y)) return 0;
	// ZDVOJNASOB SURADNICE!!!
	pii a,b;
	a=pii(x*2+1,y*2+1),b=pii(x*2+1,500);
	//cout<<x<<" "<<y<<endl;
	int pocet=0;
	REP(i,N)
	{
		pii c,d;
		c=pii(X[i].fi*2,X[i].se*2);
		d=pii(X[(i+1)%N].fi*2,X[(i+1)%N].se*2);
		if (pretina(a,b,c,d))
		{
			//cout<<"pretina "<<a.fi<<" "<<a.se<<" "<<c.fi<<" "<<c.se<<" "<<d.fi<<" "<<d.se<<endl;
			pocet++;
		}
	}
	//cout<<pocet<<endl;
	return pocet%2==1;
}

int main()
{
	while(scanf("%d",&N),N>0)
	{
		int minx=0;
		int maxx=0;
		int miny=0;
		int maxy=0;
		memset(zle,0,sizeof (zle));
		REP(i,N)
		{
			scanf("%d%d",&X[i].fi,&X[i].se);
			minx=min(minx,X[i].fi);
			miny=min(miny,X[i].se);
			maxx=max(maxx,X[i].fi);
			maxy=max(maxy,X[i].se);
		}
		REP(i,N)
		{
			pii a=X[i],b=X[(i+1)%N];
			if (a.fi!=b.fi&&a.se!=b.se)
			{
				//cout<<"ahoj "<<i<<endl;
				int xdlzka=abs(a.fi-b.fi);
				int ydlzka=abs(a.se-b.se);
				//cout<<xdlzka<<"x"<<ydlzka<<endl;
				int zacx=min(a.fi,b.fi);
				int konx=max(a.fi,b.fi);
				for(int j=zacx+1;j<=konx;j++)
				{
					int segx=abs(j-zacx);
					if (xdlzka%segx==0)
					{
						//cout<<"segx="<<segx<<endl;
						if (ydlzka%(xdlzka/segx)==0)
						{
							int segy=ydlzka/(xdlzka/segx);
							if (a.fi>b.fi) segx=-segx;
							if (a.se>b.se) segy=-segy;
							//cout<<xdlzka<<"x "<<segx<<" "<<ydlzka<<"y "<<segy<<endl;
							for(j=0;j<xdlzka/abs(segx);++j)
							{
								//cout<<"index="<<j<<" segx="<<segx<<" segy="<<segy<<endl;
								// j - index obdlznika
								// vyplnam obdlznik
								for(int xa=a.fi+segx*j;a.fi<b.fi?(xa<a.fi+segx*(j+1)):(xa>a.fi+segx*(j+1));xa=xa+(segx>0?1:-1))
								{
									for(int ya=a.se+segy*j;a.se<b.se?(ya<a.se+segy*(j+1)):(ya>a.se+segy*(j+1));ya=ya+(segy>0?1:-1))
									{
										//cout<<"znacim "<<xa-(a.fi>b.fi?1:0)<<" "<<ya-(a.se>b.se?1:0)<<endl;
										invalid(xa-(a.fi>b.fi?1:0),ya-(a.se>b.se?1:0));
									}
								}
							}
							break;
						}
					}
				}
			}
		}
		int ret=0;
		for(int j=-101;j<=101;++j)
		{
			for(int i=-101;i<=101;++i)
			{
				if (vnutri(i,j))
				{
					//putchar('.');
					ret++;
				}
				/*
				else
				{
					putchar('*');
				}
				*/
			}
			//putchar(10);
		}
		printf("%d\n",ret);
	}
	return 0;
}
