#include ////////////////////////////////////////////Kevin Chen 2011 #include /////////////////////////////////////////////////////////// #include /////////////////////////////////////////////////////////// typedef double F;typedef int I;I z=512,s=100,r=1e5;F t=1e-5;struct V{F x,y,z;V (F a=0,F b=0,F c=0){x=a;y=b;z=c;}V operator+(V a){return V(x+a.x,y+a.y,z+a.z); }V operator!(){V a=*this;return a*(1/sqrt(a*a));}V operator*(F a){return V(x*a ,y*a,z*a);} F operator*(V a){return x*a.x+y*a.y+z*a.z;}V operator^(V a){return V(y*a.z-z*a.y,z*a.x-x*a.z,x*a.y-y*a.x);}V M(V a){return V(x*a.x,y*a.y,z*a.z);} } w=V(.8,.8,.8),v=V(.9,.9,.9);struct S{V p;F r;V c;I t;}os[]={{V(2+r,0,0),r,V( .3,.3,.8),1},{V(-2-r,0,0),r,V(.8,.3,.3),1},{V(0,2+r,0),r,w,1},{V(0,-2-r,0),r,w ,1},{V(0,0,-2-r),r,w,1},{V(0,0,-8-r),r,V(),1},{V(-1,-1.25,-.5),.75,v,2},{V(1,- 1.25,1),.75,v,3}, {V(0,6.95f,.5),5,V(15,15,15),0}};F R(){return (F)drand48();} void C(F a){printf("%c",(I)(255*pow((a>1)?1:a,.45)));}V T(V p,V d,I x){F s=-1, a,b,c;S o;V q,n,f;for(I i=0;i<9;i++){q=p+os[i].p*-1;b=q*d;a=os[i].r;c=b*b-(q*q -a*a);if(c>=0){c=sqrt(c);a=-b-c;b=-b+c;if(b>t){if(a<-t)a=b;if(a5)return f;f=o.c;if(o.t==0)return f;q=p+d*s;n=!(q+o.p*-1); if(o.t==2)return f.M(T(q,d+n*(d*n*-2),x+1));if(o.t==3){n=n*-1;c=d*n;a=.7;if(c< 0)c=-c,n=n*-1,a=1/a;b=1-a*a*(1-c*c);if(b<0||R().1?V(0,1):V(1))^n);return f.M(T(q,u*cos(a)*c+(n ^u)*sin(a)*c+n*sqrt(1-b),x+1));}I main(I x,char**a){if(x>2)z=atoi(a[1]),s=atoi (a[2]);V c=V(0,0,6),d=V(0,.5,5);printf("P6 %d %d 255 ",z,z);for(I y=0;y