#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
struct pt{
ld x,y;
pt operator +(pt a){return {a.x+x,a.y+y};}
pt operator -(pt a){return {a.x-x,a.y-y};}
pt operator *(ld a){return {a * x,a * y};}
pt operator /(ld a){return {x / a,y / a};}
};
ld crs(pt a,pt b){return (a.x*b.y-a.y*b.x);}
pt prp(pt p){return {-p.y,p.x};}
struct line{
pt v; ld c;
line(pt p,pt q):v(q-p),c(crs(v,p)){}
line perp(pt p){return {p,p+prp(v)};}
};
pt intrsct(line l1,line l2){
assert(crs(l1.v,l2.v)!=0);
ld d = crs(l1.v,l2.v);
pt ret = (l1.v*l2.c - l2.v*l1.c)/d;
return ret;
}
pt read(){
ld x,y;cin>>x>>y;
return {x,y};
}
int main(){
cout<<fixed<<setprecision(2);
int t;
cin>>t;
int tst =0;
while(t--){
tst++;
pt a,aa,b,bb;
pt ma,mb;
a = read();
b = read();
aa = read();
bb = read();
ma = (a+aa)/2;
mb = (b+bb)/2;
line l1 = {a,aa};
line l2 = {b,bb};
l1 = l1.perp(ma);
l2 = l2.perp(mb);
pt out = intrsct(l1,l2);
cout<<"Caso #"<<tst<<": "<<out.x<<" "<<out.y<<endl;
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsgCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIGxvbmcgZG91YmxlIGxkOwpzdHJ1Y3QgcHR7CglsZCB4LHk7CglwdCBvcGVyYXRvciArKHB0IGEpe3JldHVybiB7YS54K3gsYS55K3l9O30KCXB0IG9wZXJhdG9yIC0ocHQgYSl7cmV0dXJuIHthLngteCxhLnkteX07fQoJcHQgb3BlcmF0b3IgKihsZCBhKXtyZXR1cm4ge2EgKiB4LGEgKiB5fTt9CglwdCBvcGVyYXRvciAvKGxkIGEpe3JldHVybiB7eCAvIGEseSAvIGF9O30KfTsKbGQgY3JzKHB0IGEscHQgYil7cmV0dXJuIChhLngqYi55LWEueSpiLngpO30KcHQgcHJwKHB0IHApe3JldHVybiB7LXAueSxwLnh9O30Kc3RydWN0IGxpbmV7CglwdCB2OyBsZCBjOwoJbGluZShwdCBwLHB0IHEpOnYocS1wKSxjKGNycyh2LHApKXt9CglsaW5lIHBlcnAocHQgcCl7cmV0dXJuIHtwLHArcHJwKHYpfTt9Cn07CnB0IGludHJzY3QobGluZSBsMSxsaW5lIGwyKXsKCWFzc2VydChjcnMobDEudixsMi52KSE9MCk7CglsZCBkID0gY3JzKGwxLnYsbDIudik7CglwdCByZXQgPSAobDEudipsMi5jIC0gbDIudipsMS5jKS9kOwoJcmV0dXJuIHJldDsKfQpwdCByZWFkKCl7CglsZCB4LHk7Y2luPj54Pj55OwoJcmV0dXJuIHt4LHl9Owp9CmludCBtYWluKCl7Cgljb3V0PDxmaXhlZDw8c2V0cHJlY2lzaW9uKDIpOwoJaW50IHQ7IAoJY2luPj50OwoJaW50IHRzdCA9MDsgCgl3aGlsZSh0LS0pewoJCXRzdCsrOwoJCXB0IGEsYWEsYixiYjsKCQlwdCBtYSxtYjsKCQlhID0gcmVhZCgpOwoJCWIgPSByZWFkKCk7CgkJYWEgPSByZWFkKCk7CgkJYmIgPSByZWFkKCk7CgkJbWEgPSAoYSthYSkvMjsKCQltYiA9IChiK2JiKS8yOwoJCWxpbmUgbDEgPSB7YSxhYX07CgkJbGluZSBsMiA9IHtiLGJifTsKCQlsMSA9IGwxLnBlcnAobWEpOwoJCWwyID0gbDIucGVycChtYik7CgkJcHQgb3V0ID0gaW50cnNjdChsMSxsMik7CgkJY291dDw8IkNhc28gIyI8PHRzdDw8IjogIjw8b3V0Lng8PCIgIjw8b3V0Lnk8PGVuZGw7Cgl9CglyZXR1cm4gMDsKfQo=