#include <iostream>
using namespace std;
#define max_n 1e-9
int t = 1, test = 1, n;
struct magnet{
double pos;
double weight;
};
magnet a[12];
inline double abs_sub(double x, double y){
return x > y ? x - y : y - x;
}
int calculate(double pos_mid, int id){
double total_l = 0, total_r = 0;
for(int i = id; i >= 1; i--){
double d1 = abs_sub(pos_mid, a[i].pos);
double wei_1 = a[i].weight;
total_l += wei_1 / (d1 * d1);
}
for(int i = id + 1; i <= n; i++){
double d2 = abs_sub(pos_mid, a[i].pos);
double wei_2 = a[i].weight;
total_r += wei_2 / (d2 * d2);
}
double tmp = abs_sub(total_l, total_r);
if(tmp < max_n){
return 0;
}
return total_l < total_r ? 1 : 2;
}
double solution(int index){
double start = a[index].pos;
double end = a[index+1].pos;
double result, mid;
while(start <= end){
mid = (start + end) / 2;
if(calculate(mid, index) == 0){
result = mid;
break;
}else if(calculate(mid, index) == 1){
start = mid;
}else{
end = mid;
}
//cout << mid << endl;
}
return result;
}
int main(){
freopen("input.txt", "r", stdin);
while(t--){
cin >> n;
for(int i = 1; i <= n; i++){
cin >> a[i].pos;
}
for(int i = 1; i <= n; i++){
cin >> a[i].weight;
}
cout << "Case #" << test << endl;
for(int i = 1; i < n; i++){
cout << fixed;
cout.precision(10);
cout << solution(i) << " ";
}
cout << endl;
/*for(int i = 1; i <= n; i++){
cout << a[i].pos << " ";
}
for(int i = 1; i <= n; i++){
cout << a[i].weight << " ";
}
cout << endl;*/
test++;
}
//while(1);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBtYXhfbiAxZS05CgppbnQgdCA9IDEsIHRlc3QgPSAxLCBuOwpzdHJ1Y3QgbWFnbmV0ewoJZG91YmxlIHBvczsKCWRvdWJsZSB3ZWlnaHQ7Cn07Cm1hZ25ldCBhWzEyXTsKCmlubGluZSBkb3VibGUgYWJzX3N1Yihkb3VibGUgeCwgZG91YmxlIHkpewoJcmV0dXJuIHggPiB5ID8geCAtIHkgOiB5IC0geDsKfQoKaW50IGNhbGN1bGF0ZShkb3VibGUgcG9zX21pZCwgaW50IGlkKXsKCWRvdWJsZSB0b3RhbF9sID0gMCwgdG90YWxfciA9IDA7CgkKCWZvcihpbnQgaSA9IGlkOyBpID49IDE7IGktLSl7CgkJZG91YmxlIGQxID0gYWJzX3N1Yihwb3NfbWlkLCBhW2ldLnBvcyk7CgkJZG91YmxlIHdlaV8xID0gYVtpXS53ZWlnaHQ7CgkJdG90YWxfbCArPSB3ZWlfMSAvIChkMSAqIGQxKTsKCX0KCWZvcihpbnQgaSA9IGlkICsgMTsgaSA8PSBuOyBpKyspewoJCWRvdWJsZSBkMiA9IGFic19zdWIocG9zX21pZCwgYVtpXS5wb3MpOwoJCWRvdWJsZSB3ZWlfMiA9IGFbaV0ud2VpZ2h0OwoJCXRvdGFsX3IgKz0gd2VpXzIgLyAoZDIgKiBkMik7Cgl9CgkKCWRvdWJsZSB0bXAgPSBhYnNfc3ViKHRvdGFsX2wsIHRvdGFsX3IpOwoJaWYodG1wIDwgbWF4X24pewoJCXJldHVybiAwOwoJfQoJcmV0dXJuIHRvdGFsX2wgPCB0b3RhbF9yID8gMSA6IDI7Cn0KCmRvdWJsZSBzb2x1dGlvbihpbnQgaW5kZXgpewoJZG91YmxlIHN0YXJ0ID0gYVtpbmRleF0ucG9zOwoJZG91YmxlIGVuZCA9IGFbaW5kZXgrMV0ucG9zOwoJZG91YmxlIHJlc3VsdCwgbWlkOwoKCXdoaWxlKHN0YXJ0IDw9IGVuZCl7CgkJbWlkID0gKHN0YXJ0ICsgZW5kKSAvIDI7CgkJaWYoY2FsY3VsYXRlKG1pZCwgaW5kZXgpID09IDApewoJCQlyZXN1bHQgPSBtaWQ7CgkJCWJyZWFrOwoJCX1lbHNlIGlmKGNhbGN1bGF0ZShtaWQsIGluZGV4KSA9PSAxKXsKCQkJc3RhcnQgPSBtaWQ7CgkJfWVsc2V7CgkJCWVuZCA9IG1pZDsKCQl9CgkJLy9jb3V0IDw8IG1pZCA8PCBlbmRsOwoJfQoJcmV0dXJuIHJlc3VsdDsKfQoKaW50IG1haW4oKXsJCglmcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsIHN0ZGluKTsKCXdoaWxlKHQtLSl7CgkJY2luID4+IG47CgkJZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewoJCQljaW4gPj4gYVtpXS5wb3M7CgkJfQoJCWZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKCQkJY2luID4+IGFbaV0ud2VpZ2h0OwoJCX0KCQljb3V0IDw8ICJDYXNlICMiIDw8IHRlc3QgPDwgZW5kbDsKCQlmb3IoaW50IGkgPSAxOyBpIDwgbjsgaSsrKXsKCQkJY291dCA8PCBmaXhlZDsKCQkJY291dC5wcmVjaXNpb24oMTApOwoJCQljb3V0IDw8IHNvbHV0aW9uKGkpIDw8ICIgIjsKCQl9CgkJY291dCA8PCBlbmRsOwoJCS8qZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewoJCQljb3V0IDw8IGFbaV0ucG9zIDw8ICIgIjsKCQl9CgkJZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewoJCQljb3V0IDw8IGFbaV0ud2VpZ2h0IDw8ICIgIjsKCQl9CgkJY291dCA8PCBlbmRsOyovCgkJdGVzdCsrOwoJfQoJLy93aGlsZSgxKTsKCXJldHVybiAwOwp9