2018 Iranian Geometry Olympiad
There are some segments on the plane such that no two of them intersect each other (even at the ending points). We say segment $AB$ breaks segment $CD$ if the extension of $AB$ cuts $CD$ at some point between $C$ and $D$.

[asy]

  /* Geogebra to Asymptote conversion, documentation at artofproblemsolving.com/Wiki go to User:Azjps/geogebra */

import graph; size(4cm); 

real labelscalefactor = 0.5; /* changes label-to-point distance */

pen dps = linewidth(0.7) + fontsize(10); defaultpen(dps); /* default pen style */ 

pen dotstyle = black; /* point style */ 

real xmin = -5.267474904743955, xmax = 11.572179069738377, ymin = -10.642621257034536, ymax = 4.543526642434019;  /* image dimensions */



 /* draw figures */

draw((-4,-2)--(1.08,-2.03), linewidth(2)); 

draw(shift((-2.1866176795507295,-2.0107089507113147))*scale(0.21166666666666667)*(expi(pi/4)--expi(5*pi/4)^^expi(3*pi/4)--expi(7*pi/4))); /* special point */

draw((-0.16981767035094117,3.225314210196242)--(-2.1866176795507295,-2.0107089507113147), linewidth(2) + linetype("4 4")); 

draw((-0.16981767035094117,3.225314210196242)--(-0.8194002739586808,1.538865607509914), linewidth(2)); 

label("$A$",(-1.2684397405642523,3.860690076971137),SE*labelscalefactor,fontsize(16)); 

label("$B$",(-1.9211395070170559,2.002590777612728),SE*labelscalefactor,fontsize(16)); 

label("$C$",(-4.971261820527631,-1.6571211388676117),SE*labelscalefactor,fontsize(16)); 

label("$D$",(1.08925640451367566,-1.6571211388676117),SE*labelscalefactor,fontsize(16)); 

 /* dots and labels */

dot((-4,-2),dotstyle); 

dot((1.08,-2.03),dotstyle); 

dot((-0.16981767035094117,3.225314210196242),dotstyle); 

dot((-0.8194002739586808,1.538865607509914),dotstyle); 

clip((xmin,ymin)--(xmin,ymax)--(xmax,ymax)--(xmax,ymin)--cycle); 

 /* end of picture */

[/asy]



$a)$ Is it possible that each segment when extended from both ends, breaks exactly one other segment from each way?

[asy]

  /* Geogebra to Asymptote conversion, documentation at artofproblemsolving.com/Wiki go to User:Azjps/geogebra */

import graph; size(4cm); 

real labelscalefactor = 0.5; /* changes label-to-point distance */

pen dps = linewidth(0.7) + fontsize(10); defaultpen(dps); /* default pen style */ 

pen dotstyle = black; /* point style */ 

real xmin = -6.8, xmax = 8.68, ymin = -10.32, ymax = 3.64;  /* image dimensions */



 /* draw figures */

draw((-2.56,1.24)--(-0.36,1.4), linewidth(2)); 

draw((-3.32,-2.68)--(-1.24,-3.08), linewidth(2)); 

draw(shift((-2.551651190956802,-2.8277593863544612))*scale(0.17638888888888887)*(expi(pi/4)--expi(5*pi/4)^^expi(3*pi/4)--expi(7*pi/4))); /* special point */

draw(shift((-0.8889576602618603,1.3615303519809556))*scale(0.17638888888888887)*(expi(pi/4)--expi(5*pi/4)^^expi(3*pi/4)--expi(7*pi/4))); /* special point */

draw((-2.551651190956802,-2.8277593863544612)--(-0.8889576602618603,1.3615303519809556), linewidth(2) + linetype("4 4")); 

draw((-1.4097008194020806,0.049476186483185636)--(-1.8514772275312024,-1.0636149148218605), linewidth(2)); 

 /* dots and labels */

dot((-2.56,1.24),dotstyle); 

dot((-0.36,1.4),dotstyle); 

dot((-3.32,-2.68),dotstyle); 

dot((-1.24,-3.08),dotstyle); 

dot((-1.4097008194020806,0.049476186483185636),dotstyle); 

dot((-1.8514772275312024,-1.0636149148218605),dotstyle); 

clip((xmin,ymin)--(xmin,ymax)--(xmax,ymax)--(xmax,ymin)--cycle); 

 /* end of picture */

[/asy]



$b)$ A segment is called surrounded if from both sides of it, there is exactly one segment that breaks it.

(e.g. segment $AB$ in the figure.) Is it possible to have all segments to be surrounded?



[asy]

 /* Geogebra to Asymptote conversion, documentation at artofproblemsolving.com/Wiki go to User:Azjps/geogebra */

import graph; size(7cm); 

real labelscalefactor = 0.5; /* changes label-to-point distance */

pen dps = linewidth(0.7) + fontsize(10); defaultpen(dps); /* default pen style */ 

pen dotstyle = black; /* point style */ 

real xmin = -10.70976151557872, xmax = 18.64292748469251, ymin = -16.354300717041443, ymax = 9.136192362141452;  /* image dimensions */



 /* draw figures */

draw((1.0313140845297686,0.748205038977829)--(-1.3,-4), linewidth(2.8)); 

draw((-5.780195085389632,-2.13088646583346)--(-2.549994860479401,-2.13088646583346), linewidth(2.8)); 

draw((4.121070821400425,-3.816208322308361)--(1.78,-1.88), linewidth(2.8)); 

draw(shift((-0.38228674372374466,-2.13088646583346))*scale(0.21166666666666667)*(expi(pi/4)--expi(5*pi/4)^^expi(3*pi/4)--expi(7*pi/4))); /* special point */

draw((-2.549994860479401,-2.13088646583346)--(-0.38228674372374466,-2.13088646583346), linewidth(2.8) + linetype("4 4")); 

draw(shift((0.32979226045261084,-0.6805897691262632))*scale(0.21166666666666667)*(expi(pi/4)--expi(5*pi/4)^^expi(3*pi/4)--expi(7*pi/4))); /* special point */

draw((4.121070821400425,-3.816208322308361)--(0.32979226045261084,-0.6805897691262632), linewidth(2.8) + linetype("4 4")); 

draw((-3.6313140845297687,-8.74820503897783)--(3.600422205681574,5.980726991931396), linewidth(2.8) + linetype("2 2")); 

label("$A$",(-0.397698406272906,1.754593418658662),SE*labelscalefactor,fontsize(16)); 

label("$B$",(-2.6377720405041316,-3.266261278756151),SE*labelscalefactor,fontsize(16)); 

 /* dots and labels */

dot((1.0313140845297686,0.748205038977829),linewidth(6pt) + dotstyle); 

dot((-1.3,-4),linewidth(6pt) + dotstyle); 

dot((-5.780195085389632,-2.13088646583346),linewidth(6pt) + dotstyle); 

dot((-2.549994860479401,-2.13088646583346),linewidth(6pt) + dotstyle); 

dot((4.121070821400425,-3.816208322308361),linewidth(6pt) + dotstyle); 

dot((1.78,-1.88),linewidth(6pt) + dotstyle); 

clip((xmin,ymin)--(xmin,ymax)--(xmax,ymax)--(xmax,ymin)--cycle); 

 /* end of picture */

[/asy]

Proposed by Morteza Saghafian