import sys
import math


# 一次性读取所有输入,按空格分割为整数列表
data = list(map(int, sys.stdin.read().split()))
ptr = 0
q = data[ptr]
ptr += 1

output = []
# 预定义输出格式,减少字符串拼接开销
fmt_3 = "3 {0:.10f} {1:.10f} {2:.10f} {3:.10f}"

for _ in range(q):
    # 读取一组参数:xO, yO, r, xA, yA
    xO = data[ptr]
    yO = data[ptr+1]
    r = data[ptr+2]
    xA = data[ptr+3]
    yA = data[ptr+4]
    ptr += 5
    
    # 计算向量OA的分量
    dx = xA - xO
    dy = yA - yO
    # 距离平方(避免开根号)
    dist_sq = dx*dx + dy*dy
    r_sq = r*r
    
    if dist_sq < r_sq - 1e-12:  # 圆内(留浮点精度余量)
        output.append("1")
    elif abs(dist_sq - r_sq) < 1e-12:  # 圆上
        output.append("2")
    else:  # 圆外,计算两个切点
        # 计算点A到圆心的距离
        dist = math.sqrt(dist_sq)
        # 相似比:r/dist
        ratio = r / dist
        # 切点到圆心的向量在OA方向上的投影长度
        proj_len = r_sq / dist
        
        # 计算切点坐标的核心参数
        # 向量OM(M是OA上的投影点):(dx*proj_len/dist, dy*proj_len/dist)
        # 垂直向量的长度:sqrt(r² - proj_len²)
        perp_len = math.sqrt(r_sq - (proj_len * proj_len))
        
        # 两个切点P1和P2的坐标
        # P1 = O + (dx*proj_len/dist - dy*perp_len/dist, dy*proj_len/dist + dx*perp_len/dist)
        # P2 = O + (dx*proj_len/dist + dy*perp_len/dist, dy*proj_len/dist - dx*perp_len/dist)
        x1 = xO + (dx * proj_len - dy * perp_len) / dist
        y1 = yO + (dy * proj_len + dx * perp_len) / dist
        x2 = xO + (dx * proj_len + dy * perp_len) / dist
        y2 = yO + (dy * proj_len - dx * perp_len) / dist
        
        # 格式化输出,保留10位小数
        output.append(fmt_3.format(x1, y1, x2, y2))

# 批量输出所有结果
sys.stdout.write("\n".join(output))