#include <bits/stdc++.h>
using namespace std;
int s,n,h=0;
double ans=0;
struct NODE{
int x, y;
bool operator<(const NODE rhs)const{
return x<rhs.x; }
} node[100];
int main() {
cin>>s;
while(s--){
cin>>n;
h=0,ans=0;
cin>>node[0].x>>node[0].y;
for(int i=1;i<n;i++){
cin>>node[i].x>>node[i].y;
}
sort(node,node+n);
for(int i=n-2;i>=0;i--){
if(node[i+1].y<node[i].y and node[i].y>h){
//cout<<node[i].x<<endl;
ans+=sqrt( (node[i].x-node[i+1].x)*(node[i].x-node[i+1].x) + (node[i].y-node[i+1].y)*(node[i].y-node[i+1].y) )/(node[i].y-node[i+1].y)*(node[i].y-h);
h=node[i].y;
}
}
cout<<fixed<<setprecision(2)<<ans<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBzLG4saD0wOwpkb3VibGUgYW5zPTA7CnN0cnVjdCBOT0RFewoJaW50IHgsIHk7Cglib29sIG9wZXJhdG9yPChjb25zdCBOT0RFIHJocyljb25zdHsKCQlyZXR1cm4geDxyaHMueDsgfQp9IG5vZGVbMTAwXTsKaW50IG1haW4oKSB7CgljaW4+PnM7Cgl3aGlsZShzLS0pewoJCWNpbj4+bjsKCQloPTAsYW5zPTA7CgkJY2luPj5ub2RlWzBdLng+Pm5vZGVbMF0ueTsKCQlmb3IoaW50IGk9MTtpPG47aSsrKXsJCQoJCQljaW4+Pm5vZGVbaV0ueD4+bm9kZVtpXS55OwoJCX0KCQlzb3J0KG5vZGUsbm9kZStuKTsKCQlmb3IoaW50IGk9bi0yO2k+PTA7aS0tKXsKCQkJCgkJCWlmKG5vZGVbaSsxXS55PG5vZGVbaV0ueSBhbmQgbm9kZVtpXS55PmgpewoJCQkJLy9jb3V0PDxub2RlW2ldLng8PGVuZGw7CgkJCQlhbnMrPXNxcnQoICAobm9kZVtpXS54LW5vZGVbaSsxXS54KSoobm9kZVtpXS54LW5vZGVbaSsxXS54KSArIChub2RlW2ldLnktbm9kZVtpKzFdLnkpKihub2RlW2ldLnktbm9kZVtpKzFdLnkpICApLyhub2RlW2ldLnktbm9kZVtpKzFdLnkpKihub2RlW2ldLnktaCk7CgkJCQloPW5vZGVbaV0ueTsKCQkJfQoJCX0KCQljb3V0PDxmaXhlZDw8c2V0cHJlY2lzaW9uKDIpPDxhbnM8PGVuZGw7CgkJCQoJfQoJCglyZXR1cm4gMDsKfQ==
MgoxMQoxMTAwIDEyMDAKMCA1MDAKMTQwMCAxMDAKNjAwIDYwMAoyODAwIDAKNDAwIDExMDAKMTcwMCA2MDAKMTUwMCA4MDAKMjEwMCAzMDAKMTgwMCA3MDAKMjQwMCA1MDAKMgowIDEwMDAKMTAwMCAw
2
11
1100 1200
0 500
1400 100
600 600
2800 0
400 1100
1700 600
1500 800
2100 300
1800 700
2400 500
2
0 1000
1000 0