struct P{ double x,y,z; void r(){rd(x,y,z);} }; P operator-(P a,P b){ P r; r.x=a.x-b.x; r.y=a.y-b.y; r.z=a.z-b.z; return r; } P operator*(P a,P b){ P r; r.x=a.y*b.z-a.z*b.y; r.y=a.z*b.x-a.x*b.z; r.z=a.x*b.y-a.y*b.x; return r; } int operator|(P a,P b){ return a.x*b.x+a.y*b.y+a.z*b.z>0; } { P a,b,c,d,e,f,g,n; a.r(); b.r(); c.r(); d.r(); e=a-b; f=b-c; g=c-a; n=e*f; wt(((n*e|d-a)+(n*f|d-b)+(n*g|d-c))%3?"NO":"YES",""); }