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))