#include <iostream>
#include <algorithm>
using namespace std;
#define MAX_N 100
#define INF 100000000
int Answer;
struct point {
int x, y;
};
int abs(int a, int b) {
if (a < b) return b - a;
else return a - b;
}
int dist(point p1, point p2) {
return max(abs(p1.x, p2.x), abs(p1.y, p2.y));
}
int powerdist(point p, point line[]) {
return min(dist(p, line[0]), dist(p, line[1]));
}
int N;
struct point line[MAX_N][2];
int main(int argc, char** argv)
{
int T, test_case;
cin >> T;
for (test_case = 0; test_case < T; test_case++)
{
Answer = 0;
cin >> N;
for (int n = 0; n < N; n++) {
cin >> line[n][0].x >> line[n][0].y >> line[n][1].x >> line[n][1].y;
}
for (int n = 0; n < N; n++) {
int dist0 = -1, dist1 = -1;
for (int m = 0; m < N; m++) {
dist0 = max(dist0, powerdist(line[n][0], line[m]));
dist1 = max(dist1, powerdist(line[n][1], line[m]));
}
Answer = max(Answer, min(dist0, dist1));
}
cout << "Case #" << test_case + 1 << endl;
if (Answer % 2) cout << Answer/2 << ".5" << endl;
else cout << Answer / 2 << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgTUFYX04gMTAwCiNkZWZpbmUgSU5GIDEwMDAwMDAwMAoKaW50IEFuc3dlcjsKCnN0cnVjdCBwb2ludCB7CglpbnQgeCwgeTsKfTsKCmludCBhYnMoaW50IGEsIGludCBiKSB7CglpZiAoYSA8IGIpIHJldHVybiBiIC0gYTsKCWVsc2UgcmV0dXJuIGEgLSBiOwp9CgppbnQgZGlzdChwb2ludCBwMSwgcG9pbnQgcDIpIHsKCXJldHVybiBtYXgoYWJzKHAxLngsIHAyLngpLCBhYnMocDEueSwgcDIueSkpOwp9CgppbnQgcG93ZXJkaXN0KHBvaW50IHAsIHBvaW50IGxpbmVbXSkgewoJcmV0dXJuIG1pbihkaXN0KHAsIGxpbmVbMF0pLCBkaXN0KHAsIGxpbmVbMV0pKTsKfQoKaW50IE47CnN0cnVjdCBwb2ludCBsaW5lW01BWF9OXVsyXTsKCmludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKewoJaW50IFQsIHRlc3RfY2FzZTsKCgljaW4gPj4gVDsKCWZvciAodGVzdF9jYXNlID0gMDsgdGVzdF9jYXNlIDwgVDsgdGVzdF9jYXNlKyspCgl7CgkJQW5zd2VyID0gMDsKCQljaW4gPj4gTjsKCQlmb3IgKGludCBuID0gMDsgbiA8IE47IG4rKykgewoJCQljaW4gPj4gbGluZVtuXVswXS54ID4+IGxpbmVbbl1bMF0ueSA+PiBsaW5lW25dWzFdLnggPj4gbGluZVtuXVsxXS55OwoJCX0KCgkJZm9yIChpbnQgbiA9IDA7IG4gPCBOOyBuKyspIHsKCQkJaW50IGRpc3QwID0gLTEsIGRpc3QxID0gLTE7CgkJCWZvciAoaW50IG0gPSAwOyBtIDwgTjsgbSsrKSB7CgkJCQlkaXN0MCA9IG1heChkaXN0MCwgcG93ZXJkaXN0KGxpbmVbbl1bMF0sIGxpbmVbbV0pKTsKCQkJCWRpc3QxID0gbWF4KGRpc3QxLCBwb3dlcmRpc3QobGluZVtuXVsxXSwgbGluZVttXSkpOwoJCQl9CgkJCUFuc3dlciA9IG1heChBbnN3ZXIsIG1pbihkaXN0MCwgZGlzdDEpKTsKCQl9CgoJCWNvdXQgPDwgIkNhc2UgIyIgPDwgdGVzdF9jYXNlICsgMSA8PCBlbmRsOwoJCWlmIChBbnN3ZXIgJSAyKSBjb3V0IDw8IEFuc3dlci8yIDw8ICIuNSIgPDwgZW5kbDsKCQllbHNlIGNvdXQgPDwgQW5zd2VyIC8gMiA8PCBlbmRsOwoJfQoKCXJldHVybiAwOwp9
MwoyCjEgMSAxMCAxCjQgMiA1IDIKOAozIDYgMyAxMAo0IDcgMTAgNwo3IDIgNyA5CjExIDEgMTEgMTAKMSA1IDEzIDUKNCAzIDggMwoyIDIgNCAyCjkgMiAxNSAyCjgKMyA2IDMgMTAKNCA3IDEwIDcKNyAyIDcgOQoxMSAxIDExIDEwCjEgNSAxNSA1CjQgMyA4IDMKMiAyIDQgMgo5IDIgMTUgMg==
3
2
1 1 10 1
4 2 5 2
8
3 6 3 10
4 7 10 7
7 2 7 9
11 1 11 10
1 5 13 5
4 3 8 3
2 2 4 2
9 2 15 2
8
3 6 3 10
4 7 10 7
7 2 7 9
11 1 11 10
1 5 15 5
4 3 8 3
2 2 4 2
9 2 15 2