#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define zahyoutype double
typedef struct Point{zahyoutype x,y;}P;
typedef struct line{P p1,p2;}L;

P crosspoint(L s,L t){
	zahyoutype x=1;if(x/2==0){puts("type error");exit(0);}
	double deno=(s.p1.x-s.p2.x)*(t.p1.y-t.p2.y)-(t.p1.x-t.p2.x)*(s.p1.y-s.p2.y);
	zahyoutype xnume=  s.p1.x*t.p1.x*(s.p2.y-t.p2.y)-s.p1.x*t.p2.x*(s.p2.y-t.p1.y)-s.p2.x*t.p1.x*(s.p1.y-t.p2.y)+s.p2.x*t.p2.x*(s.p1.y-t.p1.y);
	zahyoutype ynume=-(s.p1.y*t.p1.y*(s.p2.x-t.p2.x)-s.p1.y*t.p2.y*(s.p2.x-t.p1.x)-s.p2.y*t.p1.y*(s.p1.x-t.p2.x)+s.p2.y*t.p2.y*(s.p1.x-t.p1.x));
	P p={xnume/deno,ynume/deno};
	return p;
}
double seglen(L s){return hypot(s.p2.x-s.p1.x,s.p2.y-s.p1.y);}
double distPP(P p,P q){return hypot(p.x-q.x,p.y-q.y);}

void readpoint(P*p){zahyoutype x=1;scanf(x/2?"%lf%lf":"%ld%ld",&p->x,&p->y);}
void printpoint(P p){zahyoutype x=1;printf(x/2?"%.f %.f\n":"%ld %ld\n",p.x,p.y);}

int main(){
	P p;
	int r;
	readpoint(&p);
	scanf("%d",&r);
	int q;
	scanf("%d",&q);
	while(q--){
		L s,t;
		readpoint(&s.p1);
		readpoint(&s.p2);
		t.p1=p;
		P q={p.x+(s.p2.y-s.p1.y),p.y-(s.p2.x-s.p1.x)};
		t.p2=q;
		P c=crosspoint(s,t);
		double d=distPP(c,p);
		double coe=sqrt(r*r-d*d)/seglen(s);
		double x1,y1,x2,y2;
		x1=c.x+coe*(s.p2.x-s.p1.x);
		y1=c.y+coe*(s.p2.y-s.p1.y);
		x2=c.x-coe*(s.p2.x-s.p1.x);
		y2=c.y-coe*(s.p2.y-s.p1.y);
		if(x2<x1||(x2==x1&&y2<y1)){
			double t=x1;x1=x2;x2=t;
			t=y1;y1=y2;y2=t;
		}
		printf("%.9f %.9f %.9f %.9f\n",x1,y1,x2,y2);
	}
}
