Problem:
MathJax.Hub.Config({ tex2jax: { inlineMath: [["$","$"], ["\\(","\\)"]], processEscapes: true }});

Circles Intersection

You are given circle $A$ with radius $r_a$ and with central coordinate $(x_a, y_a)$ and circle $B$ with radius $r_b$ and with central coordinate $(x_b, y_b)$.

Write a program which prints:

"2" if $B$ is in $A$,

"-2" if $A$ is in $B$,

"1" if circumference of $A$ and $B$ intersect, and

"0" if $A$ and $B$ do not overlap.

You may assume that $A$ and $B$ are not identical.

Input

The input consists of multiple datasets. The first line consists of an integer $N$ ($N \leq 50$), the number of datasets. There will be $N$ lines where each line represents each dataset. Each data set consists of real numbers:

$x_a$ $y_a$ $r_a$ $x_b$ $y_b$ $r_b$

Output

For each dataset, print 2, -2, 1, or 0 in a line.

Sample Input

2
0.0 0.0 5.0 0.0 0.0 4.0
0.0 0.0 2.0 4.1 0.0 2.0

Output for the Sample Input

2
0

Solution in C# (judge verdict: Wrong Answer)

using System;
class _0023
{
    public static void Main()
    {
        int n = int.Parse(Console.ReadLine());
        for (int i = 0; i < n; i++)
        {
            string[] data = Console.ReadLine().Split();
            Circle A = new Circle(double.Parse(data[0]), double.Parse(data[1]), double.Parse(data[2]));
            Circle B = new Circle(double.Parse(data[3]), double.Parse(data[4]), double.Parse(data[5]));
            if (A.CrossCircle(B))
            {
                if (A.InPoint(B))
                {
                    if (A.InCircle(B)) Console.WriteLine(2);
                    else if (B.InCircle(A)) Console.WriteLine(-2);
                }
                else Console.WriteLine(1);
            }
            else Console.WriteLine(0);
        }
    }
}
class Circle
{
    private double mx, my, r;
    public Circle() { mx = 0.0; my = 0.0; r = 0.0; }
    public Circle(double i, double j, double k) { mx = i; my = j; r = k; }
    public bool InCircle(Circle cir)
    {
        double[] PointX = SearchPoint(cir.mx, 'x');
        double[] PointY = SearchPoint(cir.my, 'y');
        return ((cir.mx + cir.r) < PointX[0] && (cir.mx - cir.r) > PointX[1] && (cir.my + cir.r) < PointY[0] && (cir.my - cir.r) > PointX[1]) ? true : false;
    }
    public bool CrossCircle(Circle cir)
    {
        return (Math.Sqrt(Math.Pow((cir.mx - this.mx), 2.0) + Math.Pow((cir.my - this.my), 2.0)) <= (cir.r + this.r)) ? true : false;
    }
    public bool InPoint(Circle cir)
    {
        return (Math.Sqrt(Math.Pow((cir.mx - this.mx), 2.0) + Math.Pow((cir.my - this.my), 2.0)) <= this.r) ? true : false;
    }
    private double[] SearchPoint(double val,char mode)
    {
        double[] point = new double[2];
        switch (mode)
        {
            case 'x':
                point[0] = Math.Sqrt(Math.Pow(r, 2.0) - Math.Pow((val - my), 2.0)) + mx;
                point[1] = -1 * point[0];
                break;
            case 'y':
                point[0] = Math.Sqrt(Math.Pow(r, 2.0) - Math.Pow((val - mx), 2.0)) + my;
                point[1] = -1 * point[0];
                break;
        }
        return point;
    }
}