/*
题意:一个无限的棋盘,黑白相间,现画出一个多边形,问黑白格子的数目 ,多边形的边是平行于x,y轴
抄watashi Orz
用类似求多边形的面积的方法
对一个处于第一象限的矩形,要求面积的话,可以对平行于y轴的边处理,答案就是外边的边跟y轴形成的区域
减去内边的边跟y轴形成的区域
而求跟y皱形成的区域可用 原点第一个点形成的区域 - 原点第二个点形成的区域
对于其他象限,发现面积的符号就是x,y坐标的符号相乘!!!
- +
+ -
而对于原点跟(x,y)形成区域的黑格子,x,y坐标为正的就是所有 奇数*奇数 + 偶数*偶数 的格子
若其中有坐标为负,就将该坐标的奇数改为偶数
好神奇
*/
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include<map>
#include<vector>
const int INF = 1000000000;
const int MAXN = 10086;
inline int odd(int x)
{
return x >= 0 ? (x+1)/2 : x/2;
}
inline int even(int x)
{
return x - odd(x);
}
#define gao()\
{\
if(y1 == y2)\
{\
all += (long long)x1*y1;\
b += (long long)odd(x1)*odd(y1) + (long long)even(x1)*even(y1);\
all -= (long long)x2*y2;\
b -= (long long)odd(x2)*odd(y2) + (long long)even(x2)*even(y2);\
}\
}\
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("in","r",stdin);
#endif
int n;
while( ~scanf("%d",&n) )
{
int x0 , y0 , x1, y1 , x2 , y2;
long long all = 0 , b = 0;
scanf("%d%d",&x0,&y0);
x1 = x0;
y1 = y0;
for(int i = 1 ; i < n; i++)
{
scanf("%d%d",&x2,&y2);
gao();
x1 = x2;
y1 = y2;
}
x2 = x0;
y2 = y0;
gao();
printf("%lld %lld\n",b , all-b);
}
return 0;
}