#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef long double ld; typedef pair PII; #define pb push_back #define fi first #define se second struct Line { int x1, x2, y1, y2; ld k; }; int main() { while(1) { int n; scanf("%d", &n); if(n==0) break; vector points; int a, b; for(int i = 0; i < n; i++) { scanf("%d %d", &a, &b); points.pb(make_pair(a,b)); } vector lines; for(int i = 0; i < n; i++) { Line l; l.x1 = points[i].fi; l.y1 = points[i].se; l.x2 = points[(i+1)%n].fi; l.y2 = points[(i+1)%n].se; if(l.y1==l.y2) continue; if(l.y1 > l.y2) { swap(l.y1,l.y2); swap(l.x1,l.x2); } l.k = ((ld)l.x2-(ld)l.x1)/((ld)l.y2-(ld)l.y1); lines.pb(l); } int co = 0; for(int r = -110; r < 110; r++) { vector > us; for(int i = 0; i < lines.size(); i++) { if(lines[i].y2<=r || lines[i].y1 > r) continue; pair p; p.fi = lines[i].x1 + lines[i].k*(r-lines[i].y1); p.se = lines[i].x1 + lines[i].k*(r+1-lines[i].y1); us.pb(p); } sort(us.begin(), us.end()); for(int i = 0; i+1 < us.size(); i+=2) { int zu = ceil(max(us[i].se, us[i].fi)); int ku = floor(min(us[i+1].se, us[i+1].fi)); if(ku>zu) co+=ku-zu; } } printf("%d\n", co); } return 0; }