#include <cmath>
#include <stdio.h>
using namespace std;
int main()
{
int ile;
int x1,y1,r1;
int x2,y2,r2;
int rw,rm;
double wynik;
scanf("%d",&ile);
for(int i=0; i<ile; i++)
{
scanf("%d%d%d",&x1,&y1,&r1);
scanf("%d%d%d",&x2,&y2,&r2);
//przesuniecie ukladu wsp do punktu x1,y1
x2-=x1;
y2-=y1;
//wyznaczenie wiekszego kola
rw=r1;
rm=r2;
if(r2>r1)
{
rw=r2;
rm=r1;
}
//kola maja wspolny srodek
if(x2==0 && y2==0)
{
printf("%.2f\n",2.0*rm);
continue;
}
//okregi zachodza na siebie calkowicie
if(x2*x2+y2*y2<=(rw-rm)*(rw-rm))
{
printf("%.2f\n",2.0*rm);
continue;
}
//okregi maja czesc wspolna
if(((x2*x2)+(y2*y2)>(rw-rm)*(rw-rm))&&((x2*x2)+(y2*y2)<(rw+rm)*(rw+rm)))
{
wynik=rw+rm-sqrt((x2*x2)+(y2*y2));
printf("%.2f\n",wynik);
continue;
}
//okregi leza obok siebie
if(x2*x2+y2*y2>=(r1+r2)*(r1+r2))
{
printf("%.2f\n",0.0);
continue;
}
}
return 0;
}
I2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8c3RkaW8uaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpCnsKICAgIGludCBpbGU7CiAgICBpbnQgeDEseTEscjE7CiAgICBpbnQgeDIseTIscjI7CiAgICBpbnQgcncscm07CiAgICBkb3VibGUgd3luaWs7CgogICAgc2NhbmYoIiVkIiwmaWxlKTsKICAgIGZvcihpbnQgaT0wOyBpPGlsZTsgaSsrKQogICAgewogICAgICAgIHNjYW5mKCIlZCVkJWQiLCZ4MSwmeTEsJnIxKTsKICAgICAgICBzY2FuZigiJWQlZCVkIiwmeDIsJnkyLCZyMik7CgogICAgICAgIC8vcHJ6ZXN1bmllY2llIHVrbGFkdSB3c3AgZG8gcHVua3R1IHgxLHkxCiAgICAgICAgeDItPXgxOwogICAgICAgIHkyLT15MTsKCiAgICAgICAgLy93eXpuYWN6ZW5pZSB3aWVrc3plZ28ga29sYQogICAgICAgIHJ3PXIxOwogICAgICAgIHJtPXIyOwogICAgICAgIGlmKHIyPnIxKQogICAgICAgIHsKICAgICAgICAgICAgcnc9cjI7CiAgICAgICAgICAgIHJtPXIxOwogICAgICAgIH0KCiAgICAgICAgLy9rb2xhIG1hamEgd3Nwb2xueSBzcm9kZWsKICAgICAgICBpZih4Mj09MCAmJiB5Mj09MCkKICAgICAgICB7CiAgICAgICAgICAgIHByaW50ZigiJS4yZlxuIiwyLjAqcm0pOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIC8vb2tyZWdpIHphY2hvZHphIG5hIHNpZWJpZSBjYWxrb3dpY2llCiAgICAgICAgaWYoeDIqeDIreTIqeTI8PShydy1ybSkqKHJ3LXJtKSkKICAgICAgICB7CiAgICAgICAgICAgIHByaW50ZigiJS4yZlxuIiwyLjAqcm0pOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgoKICAgICAgICAvL29rcmVnaSBtYWphIGN6ZXNjIHdzcG9sbmEKICAgICAgICBpZigoKHgyKngyKSsoeTIqeTIpPihydy1ybSkqKHJ3LXJtKSkmJigoeDIqeDIpKyh5Mip5Mik8KHJ3K3JtKSoocncrcm0pKSkKICAgICAgICB7CiAgICAgICAgICAgIHd5bmlrPXJ3K3JtLXNxcnQoKHgyKngyKSsoeTIqeTIpKTsKICAgICAgICAgICAgcHJpbnRmKCIlLjJmXG4iLHd5bmlrKTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoKICAgICAgICAvL29rcmVnaSBsZXphIG9ib2sgc2llYmllCiAgICAgICAgaWYoeDIqeDIreTIqeTI+PShyMStyMikqKHIxK3IyKSkKICAgICAgICB7CiAgICAgICAgICAgIHByaW50ZigiJS4yZlxuIiwwLjApOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQ==