/*
   题意:一个无限的棋盘,黑白相间,现画出一个多边形,问黑白格子的数目 ,多边形的边是平行于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;
}