def project(an,p10):
p12=an[1]-an[0]
norm = np.linalg.norm(p12)**2
#print(norm)
ret = np.dot(p10,p12)/norm
#print(ret)
return an[0]+p12*ret
def getCrossPoints(c, r, l):
#print(l)
pr = project(l, c)
#print(pr)
e = (l[1]-l[0]) / (np.linalg.norm(l[1]-l[0]))
mid = (r*r - np.linalg.norm(pr-c)**2)
base = np.sqrt(mid)
#print("==e,base==")
#print(mid,e,base)
return [pr-e*base, pr+e*base]
a = []
a.append(map(int, raw_input().split()))
for aa in a:
cx = aa[0]
cy = aa[1]
r = aa[2]
c = np.array([cx,cy])
n = input()
for i in range(n):
a = []
a.append(map(int, raw_input().split()))
for aa in a:
hn = np.array(aa).reshape(2,2)
s1 = np.array([hn[0][0],hn[0][1]])
s2 = np.array([hn[1][0],hn[1][1]])
#print(c,r,s1,s2)
gcp = getCrossPoints(c, r, [s1,s2])
#print(gcp)
out = ""
for x in gcp:
for xx in x:
if (out):
out = out + " "
out = out + str(xx)
print(out)