#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <string>
#include <utility>
#include <queue>
#include <cstring>
#include <cassert>
#include <cmath>
using namespace std;
const int inf=1000000000;
typedef long long LL;
typedef pair<int, int> PII;
template<class T> bool takemax(T &a, T &b) {bool f = (b > a); if(f) a = b; return f;}
template<class T> bool takemin(T &a, T &b) {bool f = (b < a); if(f) a = b; return f;}
#define REP(i, n) for(int i=0; i<int(n); i++)
int x[3], y[3];
int a, b, d;
void print(int i){
	printf("x[%d]=%d y[%d]=%d\n", i, x[i], i, y[i]);
}
void solve(int i, int j, int k){
	d = x[i]*y[j] - x[j]*y[i];
	a = x[k]*y[j] - x[j]*y[k];
	b = x[i]*y[k] - x[k]*y[i];
}
int cross(int x1, int y1, int x2, int y2){
	return x1*y2-x2*y1;
}
void fix(int k){
	if(k==2)return;
	swap(x[2], x[k]);
	swap(y[2], y[k]);
}
void gao(int i, int j, int k){
	solve(i, j, k);
	if(d==0){
		gao(j, k, i);
		return;
	}
	int k1=a/d, k2=b/d;
	x[k]-=k1*x[i]+k2*x[j];
	y[k]-=k1*y[i]+k2*y[j];
	if(x[k]||y[k])gao(j, k, i);
	else fix(k);
}
int main(){
	int T;
	cin>>T;
	REP(tt, T){
		scanf("%d%d%d%d%d%d", x, y, x+1, y+1, x+2, y+2);
		printf("Case #%d: ", tt+1);
		gao(0, 1, 2);
		printf("%d\n", abs(cross(x[0], y[0], x[1], y[1])));
	}
	return 0;
}
