/*
假设:
边数:m
每次移动的距离:dx、dy
开始坐标:0 0
k次移动后的坐标:move[k].x move[k].y (1<=k<=m)
E=∑每次移动的dx、dy的最大公约数
2*area=∑(move[k].x * move[k+1].y - move[k+1].x * move[k].y) (1<=k<=m-2)
I=(area+2-E)/2
*/
#include<iostream>
using namespace std;
struct dist
{
int dx;
int dy;
};
dist move[101];
int **(int a,int b)
{
if(a==0)
return b;
if(b==0)
return a;
return **(b,a%b);
}
int main()
{
int num,m,I,E,area;
int i,j;
cin>>num;
for(j=1;j<=num;j++)
{
I=E=area=0;
cin>>m;
move[0].dx=0;
move[0].dy=0;
for(i=1;i<=m;i++){
cin>>move[i].dx>>move[i].dy;
E+=**(abs(move[i].dx),abs(move[i].dy));
}
for(i=1;i<=m;i++)
{
move[i].dx+=move[i-1].dx;
move[i].dy+=move[i-1].dy;
}
for(i=1;i<m-1;i++){
area+=move[i].dx*move[i+1].dy-move[i+1].dx*move[i].dy;
}
area=abs(area);
I=(area+2-E)/2;
cout<<"Scenario #"<<j<<":"<<endl;
cout<<I<<' '<<E<<' ';
if(area%2!=0)
cout<<area/2+0.5<<endl;
else
cout<<area/2<<".0"<<endl;
cout<<endl;
for(i=0;i<=m;i++)
{
move[i].dx=0;
move[i].dy=0;
}
}
return 0;
}