diff --git a/lessons/tris/figures/arbre_tab.eps b/lessons/tris/figures/arbre_tab.eps
new file mode 100644
index 0000000000000000000000000000000000000000..cb1b47bad8822176eaf5152fa309315262e6fa2a
--- /dev/null
+++ b/lessons/tris/figures/arbre_tab.eps
@@ -0,0 +1,405 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Title: arbre_tab.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 5e
+%%CreationDate: Thu Dec 27 00:07:59 2018
+%%BoundingBox: 0 0 511 506
+%Magnification: 1.0000
+%%EndComments
+%%BeginProlog
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+ /DrawEllipse {
+	/endangle exch def
+	/startangle exch def
+	/yrad exch def
+	/xrad exch def
+	/y exch def
+	/x exch def
+	/savematrix mtrx currentmatrix def
+	x y tr xrad yrad sc 0 0 1 startangle endangle arc
+	closepath
+	savematrix setmatrix
+	} def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+/pageheader {
+save
+newpath 0 506 moveto 0 0 lineto 511 0 lineto 511 506 lineto closepath clip newpath
+-12.6 554.5 translate
+1 -1 scale
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.06000 0.06000 sc
+} bind def
+/pagefooter {
+$F2psEnd
+restore
+} bind def
+%%EndProlog
+pageheader
+%
+% Fig objects follow
+%
+% 
+% here starts figure with depth 50
+% Ellipse
+15.000 slw
+n 1200 3600 300 300 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 2400 2400 300 300 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 3600 3600 300 300 0 360 DrawEllipse gs col0 s gr
+
+% Polyline
+0 slj
+0 slc
+n 1200 3285 m
+ 2175 2580 l gs col0 s gr 
+% Polyline
+n 3600 3300 m
+ 2640 2580 l gs col0 s gr 
+% Ellipse
+n 6007 3592 300 300 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7207 2392 300 300 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 8407 3592 300 300 0 360 DrawEllipse gs col0 s gr
+
+% Polyline
+n 6007 3277 m
+ 6982 2572 l gs col0 s gr 
+% Polyline
+n 8407 3292 m
+ 7447 2572 l gs col0 s gr 
+% Ellipse
+n 600 4800 300 300 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 1800 4800 300 300 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 3000 4800 300 300 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 4800 1200 300 300 0 360 DrawEllipse gs col0 s gr
+
+% Polyline
+n 1046 3837 m
+ 566 4512 l gs col0 s gr 
+% Polyline
+n 1380 3840 m
+ 1815 4500 l gs col0 s gr 
+% Polyline
+n 3450 3855 m
+ 3015 4515 l gs col0 s gr 
+% Polyline
+n 7215 2085 m
+ 5055 1350 l gs col0 s gr 
+% Polyline
+n 2400 2085 m
+ 4545 1365 l gs col0 s gr 
+% Polyline
+n 1725 7275 m 2325 7275 l 2325 7875 l 1725 7875 l
+ cp gs col0 s gr 
+% Polyline
+n 2325 7275 m 2925 7275 l 2925 7875 l 2325 7875 l
+ cp gs col0 s gr 
+% Polyline
+n 2925 7275 m 3525 7275 l 3525 7875 l 2925 7875 l
+ cp gs col0 s gr 
+% Polyline
+n 3525 7275 m 4125 7275 l 4125 7875 l 3525 7875 l
+ cp gs col0 s gr 
+% Polyline
+n 4125 7275 m 4725 7275 l 4725 7875 l 4125 7875 l
+ cp gs col0 s gr 
+% Polyline
+n 4725 7275 m 5325 7275 l 5325 7875 l 4725 7875 l
+ cp gs col0 s gr 
+% Polyline
+n 5325 7275 m 5925 7275 l 5925 7875 l 5325 7875 l
+ cp gs col0 s gr 
+% Polyline
+n 5925 7275 m 6525 7275 l 6525 7875 l 5925 7875 l
+ cp gs col0 s gr 
+% Polyline
+n 6525 7275 m 7125 7275 l 7125 7875 l 6525 7875 l
+ cp gs col0 s gr 
+% Polyline
+n 7125 7275 m 7725 7275 l 7725 7875 l 7125 7875 l
+ cp gs col0 s gr 
+% Polyline
+n 1725 6975 m 2325 6975 l 2325 7275 l 1725 7275 l
+ cp gs col0 s gr 
+% Polyline
+n 2325 6975 m 2925 6975 l 2925 7275 l 2325 7275 l
+ cp gs col0 s gr 
+% Polyline
+n 2925 6975 m 3525 6975 l 3525 7275 l 2925 7275 l
+ cp gs col0 s gr 
+% Polyline
+n 3525 6975 m 4125 6975 l 4125 7275 l 3525 7275 l
+ cp gs col0 s gr 
+% Polyline
+n 4125 6975 m 4725 6975 l 4725 7275 l 4125 7275 l
+ cp gs col0 s gr 
+% Polyline
+n 4725 6975 m 5325 6975 l 5325 7275 l 4725 7275 l
+ cp gs col0 s gr 
+% Polyline
+n 5325 6975 m 5925 6975 l 5925 7275 l 5325 7275 l
+ cp gs col0 s gr 
+% Polyline
+n 5925 6975 m 6525 6975 l 6525 7275 l 5925 7275 l
+ cp gs col0 s gr 
+% Polyline
+n 6525 6975 m 7125 6975 l 7125 7275 l 6525 7275 l
+ cp gs col0 s gr 
+% Polyline
+n 7125 6975 m 7725 6975 l 7725 7275 l 7125 7275 l
+ cp gs col0 s gr 
+% Arc
+gs  clippath
+2268 6698 m 2428 7015 l 2535 6961 l 2376 6644 l 2376 6644 l 2457 6940 l 2268 6698 l cp
+eoclip
+n 2175.0 6975.0 300.0 180.0000 0.0000 arc
+gs col0 s gr
+ gr
+
+% arrowhead
+n 2268 6698 m 2457 6940 l 2376 6644 l 2349 6725 l 2268 6698 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Arc
+gs  clippath
+2939 6657 m 3019 7003 l 3136 6976 l 3056 6630 l 3056 6630 l 3066 6936 l 2939 6657 l cp
+eoclip
+n 2475.0 6975.0 600.0 180.0000 0.0000 arc
+gs col0 s gr
+ gr
+
+% arrowhead
+n 2939 6657 m 3066 6936 l 3056 6630 l 3011 6702 l 2939 6657 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Arc
+gs  clippath
+4754 6651 m 4818 7000 l 4936 6978 l 4872 6630 l 4872 6630 l 4868 6936 l 4754 6651 l cp
+eoclip
+n 4125.0 6975.0 750.0 180.0000 0.0000 arc
+gs col0 s gr
+ gr
+
+% arrowhead
+n 4754 6651 m 4868 6936 l 4872 6630 l 4824 6699 l 4754 6651 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Arc
+gs  clippath
+5371 6646 m 5417 6997 l 5536 6982 l 5490 6630 l 5490 6630 l 5470 6936 l 5371 6646 l cp
+eoclip
+n 4425.0 6975.0 1050.0 180.0000 0.0000 arc
+gs col0 s gr
+ gr
+
+% arrowhead
+n 5371 6646 m 5470 6936 l 5490 6630 l 5438 6698 l 5371 6646 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Arc
+gs  clippath
+4068 8207 m 4033 7854 l 3913 7866 l 3949 8219 l 3949 8219 l 3979 7915 l 4068 8207 l cp
+eoclip
+n 5325.0 7875.0 1350.0 180.0000 0.0000 arcn
+gs col0 s gr
+ gr
+
+% arrowhead
+n 4068 8207 m 3979 7915 l 3949 8219 l 4002 8153 l 4068 8207 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Arc
+gs  clippath
+4078 8203 m 4032 7852 l 3913 7867 l 3959 8219 l 3959 8219 l 3980 7914 l 4078 8203 l cp
+eoclip
+n 5025.0 7875.0 1050.0 180.0000 0.0000 arcn
+gs col0 s gr
+ gr
+
+% arrowhead
+n 4078 8203 m 3980 7914 l 3959 8219 l 4011 8151 l 4078 8203 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Arc
+gs  clippath
+2895 8198 m 2831 7849 l 2713 7871 l 2777 8219 l 2777 8219 l 2782 7914 l 2895 8198 l cp
+eoclip
+n 3525.0 7875.0 750.0 180.0000 0.0000 arcn
+gs col0 s gr
+ gr
+
+% arrowhead
+n 2895 8198 m 2782 7914 l 2777 8219 l 2825 8150 l 2895 8198 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Arc
+gs  clippath
+2934 8181 m 2827 7842 l 2713 7878 l 2819 8217 l 2819 8217 l 2787 7913 l 2934 8181 l cp
+eoclip
+n 3225.0 7875.0 450.0 180.0000 0.0000 arcn
+gs col0 s gr
+ gr
+
+% arrowhead
+n 2934 8181 m 2787 7913 l 2819 8217 l 2858 8141 l 2934 8181 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Arc
+gs  clippath
+7181 6642 m 7216 6995 l 7336 6983 l 7300 6630 l 7300 6630 l 7271 6935 l 7181 6642 l cp
+eoclip
+n 5925.0 6975.0 1350.0 180.0000 0.0000 arc
+gs col0 s gr
+ gr
+
+% arrowhead
+n 7181 6642 m 7271 6935 l 7300 6630 l 7247 6696 l 7181 6642 l 
+ cp gs 0.00 setgray ef gr  col0 s
+/Times-Roman ff 333.33 scf sf
+4350 1050 m
+gs 1 -1 sc (0) col0 sh gr
+/Times-Roman ff 333.33 scf sf
+1875 2250 m
+gs 1 -1 sc (1) col0 sh gr
+/Times-Roman ff 333.33 scf sf
+6675 2250 m
+gs 1 -1 sc (2) col0 sh gr
+/Times-Roman ff 333.33 scf sf
+675 3525 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman ff 333.33 scf sf
+3075 3525 m
+gs 1 -1 sc (4) col0 sh gr
+/Times-Roman ff 333.33 scf sf
+5475 3525 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman ff 333.33 scf sf
+7875 3525 m
+gs 1 -1 sc (6) col0 sh gr
+/Times-Roman ff 333.33 scf sf
+225 4500 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman ff 333.33 scf sf
+1425 4500 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman ff 333.33 scf sf
+2625 4500 m
+gs 1 -1 sc (9) col0 sh gr
+/Times-Roman ff 333.33 scf sf
+1950 7200 m
+gs 1 -1 sc (0) col0 sh gr
+/Times-Roman ff 333.33 scf sf
+2550 7200 m
+gs 1 -1 sc (1) col0 sh gr
+/Times-Roman ff 333.33 scf sf
+3150 7200 m
+gs 1 -1 sc (2) col0 sh gr
+/Times-Roman ff 333.33 scf sf
+3750 7200 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman ff 333.33 scf sf
+4350 7200 m
+gs 1 -1 sc (4) col0 sh gr
+/Times-Roman ff 333.33 scf sf
+4950 7200 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman ff 333.33 scf sf
+5550 7200 m
+gs 1 -1 sc (6) col0 sh gr
+/Times-Roman ff 333.33 scf sf
+6150 7200 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman ff 333.33 scf sf
+6750 7200 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman ff 333.33 scf sf
+7275 7200 m
+gs 1 -1 sc (9) col0 sh gr
+/Times-Roman ff 333.33 scf sf
+3000 8925 m
+gs 1 -1 sc (est fils de) col0 sh gr
+/Times-Roman ff 333.33 scf sf
+3225 5775 m
+gs 1 -1 sc (est parent de) col0 sh gr
+% here ends figure;
+pagefooter
+showpage
+%%Trailer
+%EOF
diff --git a/lessons/tris/figures/arbre_tab.fig b/lessons/tris/figures/arbre_tab.fig
new file mode 100644
index 0000000000000000000000000000000000000000..2132af9aea2d3694bbaf1efa507e15f52a03bfcc
--- /dev/null
+++ b/lessons/tris/figures/arbre_tab.fig
@@ -0,0 +1,131 @@
+#FIG 3.2  Produced by xfig version 3.2.5c
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 225 825 8775 5175
+6 885 2085 3915 3915
+1 3 0 2 0 7 50 -1 -1 0.000 1 0.0000 1200 3600 300 300 1200 3600 1200 3900
+1 3 0 2 0 7 50 -1 -1 0.000 1 0.0000 2400 2400 300 300 2400 2400 2400 2700
+1 3 0 2 0 7 50 -1 -1 0.000 1 0.0000 3600 3600 300 300 3600 3600 3600 3900
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 2
+	 1200 3285 2175 2580
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 2
+	 3600 3300 2640 2580
+-6
+6 5625 2025 8775 3975
+1 3 0 2 0 7 50 -1 -1 0.000 1 0.0000 6007 3592 300 300 6007 3592 6007 3892
+1 3 0 2 0 7 50 -1 -1 0.000 1 0.0000 7207 2392 300 300 7207 2392 7207 2692
+1 3 0 2 0 7 50 -1 -1 0.000 1 0.0000 8407 3592 300 300 8407 3592 8407 3892
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 2
+	 6007 3277 6982 2572
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 2
+	 8407 3292 7447 2572
+-6
+1 3 0 2 0 7 50 -1 -1 0.000 1 0.0000 600 4800 300 300 600 4800 600 5100
+1 3 0 2 0 7 50 -1 -1 0.000 1 0.0000 1800 4800 300 300 1800 4800 1800 5100
+1 3 0 2 0 7 50 -1 -1 0.000 1 0.0000 3000 4800 300 300 3000 4800 3000 5100
+1 3 0 2 0 7 50 -1 -1 0.000 1 0.0000 4800 1200 300 300 4800 1200 4800 1500
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 2
+	 1046 3837 566 4512
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 2
+	 1380 3840 1815 4500
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 2
+	 3450 3855 3015 4515
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 2
+	 7215 2085 5055 1350
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 2
+	 2400 2085 4545 1365
+4 0 0 50 -1 0 20 0.0000 4 225 165 4350 1050 0\001
+4 0 0 50 -1 0 20 0.0000 4 225 165 1875 2250 1\001
+4 0 0 50 -1 0 20 0.0000 4 225 165 6675 2250 2\001
+4 0 0 50 -1 0 20 0.0000 4 225 165 675 3525 3\001
+4 0 0 50 -1 0 20 0.0000 4 225 165 3075 3525 4\001
+4 0 0 50 -1 0 20 0.0000 4 240 165 5475 3525 5\001
+4 0 0 50 -1 0 20 0.0000 4 225 165 7875 3525 6\001
+4 0 0 50 -1 0 20 0.0000 4 225 165 225 4500 7\001
+4 0 0 50 -1 0 20 0.0000 4 225 165 1425 4500 8\001
+4 0 0 50 -1 0 20 0.0000 4 240 165 2625 4500 9\001
+-6
+6 1650 5550 7800 9300
+6 1650 5550 7800 9300
+5 1 0 2 0 7 50 -1 -1 0.000 0 0 1 0 2175.000 6975.000 1875 6975 2175 6675 2475 6975
+	2 1 2.00 120.00 240.00
+5 1 0 2 0 7 50 -1 -1 0.000 0 0 1 0 2475.000 6975.000 1875 6975 2475 6375 3075 6975
+	2 1 2.00 120.00 240.00
+5 1 0 2 0 7 50 -1 -1 0.000 0 0 1 0 4125.000 6975.000 3375 6975 4125 6225 4875 6975
+	2 1 2.00 120.00 240.00
+5 1 0 2 0 7 50 -1 -1 0.000 0 0 1 0 4425.000 6975.000 3375 6975 4425 5925 5475 6975
+	2 1 2.00 120.00 240.00
+5 1 0 2 0 7 50 -1 -1 0.000 0 1 0 1 5325.000 7875.000 3975 7875 5325 9225 6675 7875
+	2 1 2.00 120.00 240.00
+5 1 0 2 0 7 50 -1 -1 0.000 0 1 0 1 5025.000 7875.000 3975 7875 5025 8925 6075 7875
+	2 1 2.00 120.00 240.00
+5 1 0 2 0 7 50 -1 -1 0.000 0 1 0 1 3525.000 7875.000 2775 7875 3525 8625 4275 7875
+	2 1 2.00 120.00 240.00
+5 1 0 2 0 7 50 -1 -1 0.000 0 1 0 1 3225.000 7875.000 2775 7875 3225 8325 3675 7875
+	2 1 2.00 120.00 240.00
+5 1 0 2 0 7 50 -1 -1 0.000 0 0 1 0 5925.000 6975.000 4575 6975 5925 5625 7275 6975
+	2 1 2.00 120.00 240.00
+6 1650 6900 7800 7950
+6 1710 7260 7740 7890
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 1725 7275 2325 7275 2325 7875 1725 7875 1725 7275
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 2325 7275 2925 7275 2925 7875 2325 7875 2325 7275
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 2925 7275 3525 7275 3525 7875 2925 7875 2925 7275
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 3525 7275 4125 7275 4125 7875 3525 7875 3525 7275
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 4125 7275 4725 7275 4725 7875 4125 7875 4125 7275
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 4725 7275 5325 7275 5325 7875 4725 7875 4725 7275
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 5325 7275 5925 7275 5925 7875 5325 7875 5325 7275
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 5925 7275 6525 7275 6525 7875 5925 7875 5925 7275
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 6525 7275 7125 7275 7125 7875 6525 7875 6525 7275
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 7125 7275 7725 7275 7725 7875 7125 7875 7125 7275
+-6
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 1725 6975 2325 6975 2325 7275 1725 7275 1725 6975
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 2325 6975 2925 6975 2925 7275 2325 7275 2325 6975
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 2925 6975 3525 6975 3525 7275 2925 7275 2925 6975
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 3525 6975 4125 6975 4125 7275 3525 7275 3525 6975
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 4125 6975 4725 6975 4725 7275 4125 7275 4125 6975
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 4725 6975 5325 6975 5325 7275 4725 7275 4725 6975
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 5325 6975 5925 6975 5925 7275 5325 7275 5325 6975
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 5925 6975 6525 6975 6525 7275 5925 7275 5925 6975
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 6525 6975 7125 6975 7125 7275 6525 7275 6525 6975
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 7125 6975 7725 6975 7725 7275 7125 7275 7125 6975
+4 0 0 50 -1 0 20 0.0000 4 225 165 1950 7200 0\001
+4 0 0 50 -1 0 20 0.0000 4 225 165 2550 7200 1\001
+4 0 0 50 -1 0 20 0.0000 4 225 165 3150 7200 2\001
+4 0 0 50 -1 0 20 0.0000 4 225 165 3750 7200 3\001
+4 0 0 50 -1 0 20 0.0000 4 225 165 4350 7200 4\001
+4 0 0 50 -1 0 20 0.0000 4 240 165 4950 7200 5\001
+4 0 0 50 -1 0 20 0.0000 4 225 165 5550 7200 6\001
+4 0 0 50 -1 0 20 0.0000 4 225 165 6150 7200 7\001
+4 0 0 50 -1 0 20 0.0000 4 225 165 6750 7200 8\001
+4 0 0 50 -1 0 20 0.0000 4 240 165 7275 7200 9\001
+-6
+-6
+4 0 0 50 -1 0 20 0.0000 4 225 1290 3000 8925 est fils de\001
+4 0 0 50 -1 0 20 0.0000 4 300 1695 3225 5775 est parent de\001
+-6
diff --git a/lessons/tris/figures/depart.eps b/lessons/tris/figures/depart.eps
new file mode 100644
index 0000000000000000000000000000000000000000..d14c753a28ebd3adc45c83077709b1f6685f6fa6
--- /dev/null
+++ b/lessons/tris/figures/depart.eps
@@ -0,0 +1,261 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: depart.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 4
+%%CreationDate: Mon May  9 11:20:58 2005
+%%For: lazeyras@eig3 (LAZEYRAS Michel - EIG prof)
+%%BoundingBox: 0 0 452 308
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 308 moveto 0 0 lineto 452 0 lineto 452 308 lineto closepath clip newpath
+-71.3 343.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+ /DrawEllipse {
+	/endangle exch def
+	/startangle exch def
+	/yrad exch def
+	/xrad exch def
+	/y exch def
+	/x exch def
+	/savematrix mtrx currentmatrix def
+	x y tr xrad yrad sc 0 0 1 startangle endangle arc
+	closepath
+	savematrix setmatrix
+	} def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% 
+% here starts figure with depth 50
+% Polyline
+7.500 slw
+n 8025 3225 m
+ 8325 3900 l gs col0 s gr 
+% Polyline
+n 2250 4500 m
+ 1875 5100 l gs col0 s gr 
+% Polyline
+n 2625 4425 m
+ 3000 5100 l gs col0 s gr 
+% Polyline
+n 4650 4500 m
+ 4275 5100 l gs col0 s gr 
+/Times-Bold ff 300.00 scf sf
+1500 975 m
+gs 1 -1 sc (1) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2100 975 m
+gs 1 -1 sc (16) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3300 975 m
+gs 1 -1 sc (12) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+5700 975 m
+gs 1 -1 sc (10) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+4500 975 m
+gs 1 -1 sc (2) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+5100 975 m
+gs 1 -1 sc (8) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2700 975 m
+gs 1 -1 sc (5) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6000 1875 m
+gs 1 -1 sc (1) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3600 3000 m
+gs 1 -1 sc (16) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+7800 3075 m
+gs 1 -1 sc (5) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2400 4275 m
+gs 1 -1 sc (12) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+7200 4275 m
+gs 1 -1 sc (2) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+8400 4275 m
+gs 1 -1 sc (8) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+1800 5475 m
+gs 1 -1 sc (10) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6300 975 m
+gs 1 -1 sc (6) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3000 5475 m
+gs 1 -1 sc (6) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6900 975 m
+gs 1 -1 sc (7) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3900 975 m
+gs 1 -1 sc (4) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+4800 4275 m
+gs 1 -1 sc (4) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+4200 5475 m
+gs 1 -1 sc (7) dup sw pop 2 div neg 0 rm  col0 sh gr
+% Polyline
+n 7575 3225 m
+ 7275 3900 l gs col0 s gr 
+% Ellipse
+n 8400 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 3000 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7200 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 6000 1800 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 3600 2925 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 2400 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 1800 5400 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 3000 5400 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+30.000 slw
+n 4800 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+7.500 slw
+n 4200 5400 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Polyline
+n 1200 600 m 1800 600 l 1800 1200 l 1200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 1800 600 m 2400 600 l 2400 1200 l 1800 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 600 m 3000 600 l 3000 1200 l 2400 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 3000 600 m 3600 600 l 3600 1200 l 3000 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 3600 600 m 4200 600 l 4200 1200 l 3600 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 4200 600 m 4800 600 l 4800 1200 l 4200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 4800 600 m 5400 600 l 5400 1200 l 4800 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 5400 600 m 6000 600 l 6000 1200 l 5400 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 6000 600 m 6600 600 l 6600 1200 l 6000 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 6600 600 m 7200 600 l 7200 1200 l 6600 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 5700 1950 m
+ 3900 2775 l gs col0 s gr 
+% Polyline
+n 6300 1950 m
+ 7500 2850 l gs col0 s gr 
+% Polyline
+n 3300 3075 m
+ 2550 3975 l gs col0 s gr 
+% Polyline
+n 3900 3075 m
+ 4650 3975 l gs col0 s gr 
+% here ends figure;
+$F2psEnd
+rs
+showpage
diff --git a/lessons/tris/figures/depart.fig b/lessons/tris/figures/depart.fig
new file mode 100644
index 0000000000000000000000000000000000000000..7f3dbe5956f4ae9705e90cb49532020d3498c9cc
--- /dev/null
+++ b/lessons/tris/figures/depart.fig
@@ -0,0 +1,77 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 8400 4200 309 309 8400 4200 8475 4500
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7800 3000 309 309 7800 3000 7875 3300
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7200 4200 309 309 7200 4200 7275 4500
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6000 1800 309 309 6000 1800 6075 2100
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3600 2925 309 309 3600 2925 3675 3225
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2400 4200 309 309 2400 4200 2475 4500
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1800 5400 309 309 1800 5400 1875 5700
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3000 5400 309 309 3000 5400 3075 5700
+1 3 0 3 0 7 50 -1 -1 0.000 1 0.0000 4800 4200 309 309 4800 4200 5109 4200
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4200 5400 309 309 4200 5400 4509 5400
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1200 600 1800 600 1800 1200 1200 1200 1200 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1800 600 2400 600 2400 1200 1800 1200 1800 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2400 600 3000 600 3000 1200 2400 1200 2400 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3000 600 3600 600 3600 1200 3000 1200 3000 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3600 600 4200 600 4200 1200 3600 1200 3600 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4200 600 4800 600 4800 1200 4200 1200 4200 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4800 600 5400 600 5400 1200 4800 1200 4800 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 5400 600 6000 600 6000 1200 5400 1200 5400 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6000 600 6600 600 6600 1200 6000 1200 6000 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6600 600 7200 600 7200 1200 6600 1200 6600 600
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 5700 1950 3900 2775
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 6300 1950 7500 2850
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 3300 3075 2550 3975
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 3900 3075 4650 3975
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7575 3225 7275 3900
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 8025 3225 8325 3900
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 2250 4500 1875 5100
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 2625 4425 3000 5100
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 4650 4500 4275 5100
+4 1 0 50 -1 2 20 0.0000 0 210 150 1500 975 1\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 2100 975 16\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 3300 975 12\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 5700 975 10\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 4500 975 2\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 5100 975 8\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 2700 975 5\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 6000 1875 1\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 3600 3000 16\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 7800 3075 5\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 2400 4275 12\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 7200 4275 2\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 8400 4275 8\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 1800 5475 10\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 6300 975 6\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 3000 5475 6\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 6900 975 7\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 3900 975 4\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 4800 4275 4\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 4200 5475 7\001
diff --git a/lessons/tris/figures/etape_1_1.eps b/lessons/tris/figures/etape_1_1.eps
new file mode 100644
index 0000000000000000000000000000000000000000..a44823fa82d39a1cc787dbc030d65fec9faeb175
--- /dev/null
+++ b/lessons/tris/figures/etape_1_1.eps
@@ -0,0 +1,263 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: etape_1_1.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 4
+%%CreationDate: Mon May  9 11:23:56 2005
+%%For: lazeyras@eig3 (LAZEYRAS Michel - EIG prof)
+%%BoundingBox: 0 0 452 309
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 309 moveto 0 0 lineto 452 0 lineto 452 309 lineto closepath clip newpath
+-71.3 343.9 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+ /DrawEllipse {
+	/endangle exch def
+	/startangle exch def
+	/yrad exch def
+	/xrad exch def
+	/y exch def
+	/x exch def
+	/savematrix mtrx currentmatrix def
+	x y tr xrad yrad sc 0 0 1 startangle endangle arc
+	closepath
+	savematrix setmatrix
+	} def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% 
+% here starts figure with depth 50
+% Polyline
+7.500 slw
+n 8025 3225 m
+ 8325 3900 l gs col0 s gr 
+% Polyline
+n 2250 4500 m
+ 1875 5100 l gs col0 s gr 
+% Polyline
+n 2625 4425 m
+ 3000 5100 l gs col0 s gr 
+% Polyline
+30.000 slw
+n 4650 4500 m
+ 4275 5100 l gs col0 s gr 
+/Times-Bold ff 300.00 scf sf
+1500 975 m
+gs 1 -1 sc (1) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2100 975 m
+gs 1 -1 sc (16) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3300 975 m
+gs 1 -1 sc (12) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+5700 975 m
+gs 1 -1 sc (10) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+4500 975 m
+gs 1 -1 sc (2) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+5100 975 m
+gs 1 -1 sc (8) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2700 975 m
+gs 1 -1 sc (5) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6000 1875 m
+gs 1 -1 sc (1) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3600 3000 m
+gs 1 -1 sc (16) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+7800 3075 m
+gs 1 -1 sc (5) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2400 4275 m
+gs 1 -1 sc (12) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+7200 4275 m
+gs 1 -1 sc (2) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+8400 4275 m
+gs 1 -1 sc (8) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+1800 5475 m
+gs 1 -1 sc (10) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6300 975 m
+gs 1 -1 sc (6) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3000 5475 m
+gs 1 -1 sc (6) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+4800 4275 m
+gs 1 -1 sc (7) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+4200 5475 m
+gs 1 -1 sc (4) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6900 975 m
+gs 1 -1 sc (4) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3900 975 m
+gs 1 -1 sc (7) dup sw pop 2 div neg 0 rm  col0 sh gr
+% Polyline
+7.500 slw
+n 7575 3225 m
+ 7275 3900 l gs col0 s gr 
+% Ellipse
+n 8400 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 3000 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7200 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 6000 1800 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 3600 2925 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 2400 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 1800 5400 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 3000 5400 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+30.000 slw
+n 4800 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 4200 5400 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Polyline
+7.500 slw
+n 1200 600 m 1800 600 l 1800 1200 l 1200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 1800 600 m 2400 600 l 2400 1200 l 1800 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 600 m 3000 600 l 3000 1200 l 2400 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 3000 600 m 3600 600 l 3600 1200 l 3000 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 3600 600 m 4200 600 l 4200 1200 l 3600 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 4200 600 m 4800 600 l 4800 1200 l 4200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 4800 600 m 5400 600 l 5400 1200 l 4800 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 5400 600 m 6000 600 l 6000 1200 l 5400 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 6000 600 m 6600 600 l 6600 1200 l 6000 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 6600 600 m 7200 600 l 7200 1200 l 6600 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 5700 1950 m
+ 3900 2775 l gs col0 s gr 
+% Polyline
+n 6300 1950 m
+ 7500 2850 l gs col0 s gr 
+% Polyline
+n 3300 3075 m
+ 2550 3975 l gs col0 s gr 
+% Polyline
+n 3900 3075 m
+ 4650 3975 l gs col0 s gr 
+% here ends figure;
+$F2psEnd
+rs
+showpage
diff --git a/lessons/tris/figures/etape_1_1.fig b/lessons/tris/figures/etape_1_1.fig
new file mode 100644
index 0000000000000000000000000000000000000000..bf53331f4b6f077f1d8cb74ae5207df37dae343d
--- /dev/null
+++ b/lessons/tris/figures/etape_1_1.fig
@@ -0,0 +1,77 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 8400 4200 309 309 8400 4200 8475 4500
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7800 3000 309 309 7800 3000 7875 3300
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7200 4200 309 309 7200 4200 7275 4500
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6000 1800 309 309 6000 1800 6075 2100
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3600 2925 309 309 3600 2925 3675 3225
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2400 4200 309 309 2400 4200 2475 4500
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1800 5400 309 309 1800 5400 1875 5700
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3000 5400 309 309 3000 5400 3075 5700
+1 3 0 3 0 7 50 -1 -1 0.000 1 0.0000 4800 4200 309 309 4800 4200 5109 4200
+1 3 0 3 0 7 50 -1 -1 0.000 1 0.0000 4200 5400 309 309 4200 5400 4509 5400
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1200 600 1800 600 1800 1200 1200 1200 1200 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1800 600 2400 600 2400 1200 1800 1200 1800 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2400 600 3000 600 3000 1200 2400 1200 2400 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3000 600 3600 600 3600 1200 3000 1200 3000 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3600 600 4200 600 4200 1200 3600 1200 3600 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4200 600 4800 600 4800 1200 4200 1200 4200 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4800 600 5400 600 5400 1200 4800 1200 4800 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 5400 600 6000 600 6000 1200 5400 1200 5400 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6000 600 6600 600 6600 1200 6000 1200 6000 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6600 600 7200 600 7200 1200 6600 1200 6600 600
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 5700 1950 3900 2775
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 6300 1950 7500 2850
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 3300 3075 2550 3975
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 3900 3075 4650 3975
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7575 3225 7275 3900
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 8025 3225 8325 3900
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 2250 4500 1875 5100
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 2625 4425 3000 5100
+2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 4650 4500 4275 5100
+4 1 0 50 -1 2 20 0.0000 0 210 150 1500 975 1\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 2100 975 16\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 3300 975 12\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 5700 975 10\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 4500 975 2\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 5100 975 8\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 2700 975 5\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 6000 1875 1\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 3600 3000 16\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 7800 3075 5\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 2400 4275 12\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 7200 4275 2\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 8400 4275 8\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 1800 5475 10\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 6300 975 6\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 3000 5475 6\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 4800 4275 7\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 4200 5475 4\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 6900 975 4\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 3900 975 7\001
diff --git a/lessons/tris/figures/etape_1_2.eps b/lessons/tris/figures/etape_1_2.eps
new file mode 100644
index 0000000000000000000000000000000000000000..a7776d64d1ea50602008e7126e7fb44001b6e433
--- /dev/null
+++ b/lessons/tris/figures/etape_1_2.eps
@@ -0,0 +1,263 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: etape_1_2.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 4
+%%CreationDate: Mon May  9 11:25:42 2005
+%%For: lazeyras@eig3 (LAZEYRAS Michel - EIG prof)
+%%BoundingBox: 0 0 453 308
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 308 moveto 0 0 lineto 453 0 lineto 453 308 lineto closepath clip newpath
+-71.3 343.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+ /DrawEllipse {
+	/endangle exch def
+	/startangle exch def
+	/yrad exch def
+	/xrad exch def
+	/y exch def
+	/x exch def
+	/savematrix mtrx currentmatrix def
+	x y tr xrad yrad sc 0 0 1 startangle endangle arc
+	closepath
+	savematrix setmatrix
+	} def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% 
+% here starts figure with depth 50
+% Polyline
+7.500 slw
+n 2625 4425 m
+ 3000 5100 l gs col0 s gr 
+% Polyline
+n 4650 4500 m
+ 4275 5100 l gs col0 s gr 
+% Polyline
+30.000 slw
+n 7575 3225 m
+ 7275 3900 l gs col0 s gr 
+% Polyline
+n 8025 3225 m
+ 8325 3900 l gs col0 s gr 
+/Times-Bold ff 300.00 scf sf
+1500 975 m
+gs 1 -1 sc (1) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2100 975 m
+gs 1 -1 sc (16) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3300 975 m
+gs 1 -1 sc (12) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+5700 975 m
+gs 1 -1 sc (10) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+4500 975 m
+gs 1 -1 sc (2) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6000 1875 m
+gs 1 -1 sc (1) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3600 3000 m
+gs 1 -1 sc (16) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2400 4275 m
+gs 1 -1 sc (12) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+7200 4275 m
+gs 1 -1 sc (2) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+1800 5475 m
+gs 1 -1 sc (10) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6300 975 m
+gs 1 -1 sc (6) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3000 5475 m
+gs 1 -1 sc (6) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+4800 4275 m
+gs 1 -1 sc (7) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+4200 5475 m
+gs 1 -1 sc (4) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6900 975 m
+gs 1 -1 sc (4) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3900 975 m
+gs 1 -1 sc (7) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+7800 3075 m
+gs 1 -1 sc (8) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+8400 4275 m
+gs 1 -1 sc (5) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2700 975 m
+gs 1 -1 sc (8) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+5100 975 m
+gs 1 -1 sc (5) dup sw pop 2 div neg 0 rm  col0 sh gr
+% Polyline
+7.500 slw
+n 2250 4500 m
+ 1875 5100 l gs col0 s gr 
+% Ellipse
+n 6000 1800 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 3600 2925 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 4800 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 2400 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 4200 5400 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 1800 5400 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 3000 5400 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+30.000 slw
+n 7800 3000 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7200 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 8400 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Polyline
+7.500 slw
+n 1200 600 m 1800 600 l 1800 1200 l 1200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 1800 600 m 2400 600 l 2400 1200 l 1800 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 600 m 3000 600 l 3000 1200 l 2400 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 3000 600 m 3600 600 l 3600 1200 l 3000 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 3600 600 m 4200 600 l 4200 1200 l 3600 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 4200 600 m 4800 600 l 4800 1200 l 4200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 4800 600 m 5400 600 l 5400 1200 l 4800 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 5400 600 m 6000 600 l 6000 1200 l 5400 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 6000 600 m 6600 600 l 6600 1200 l 6000 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 6600 600 m 7200 600 l 7200 1200 l 6600 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 5700 1950 m
+ 3900 2775 l gs col0 s gr 
+% Polyline
+n 6300 1950 m
+ 7500 2850 l gs col0 s gr 
+% Polyline
+n 3300 3075 m
+ 2550 3975 l gs col0 s gr 
+% Polyline
+n 3900 3075 m
+ 4650 3975 l gs col0 s gr 
+% here ends figure;
+$F2psEnd
+rs
+showpage
diff --git a/lessons/tris/figures/etape_1_2.fig b/lessons/tris/figures/etape_1_2.fig
new file mode 100644
index 0000000000000000000000000000000000000000..8f68405ee69c9ba3f78b0ceebd4ff6ec8ccbf259
--- /dev/null
+++ b/lessons/tris/figures/etape_1_2.fig
@@ -0,0 +1,77 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6000 1800 309 309 6000 1800 6075 2100
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3600 2925 309 309 3600 2925 3675 3225
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4800 4200 309 309 4800 4200 4875 4500
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2400 4200 309 309 2400 4200 2475 4500
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4200 5400 309 309 4200 5400 4275 5700
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1800 5400 309 309 1800 5400 1875 5700
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3000 5400 309 309 3000 5400 3075 5700
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7200 4200 309 309 7200 4200 7509 4200
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 8400 4200 309 309 8400 4200 8709 4200
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7800 3000 309 309 7800 3000 8109 3000
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1200 600 1800 600 1800 1200 1200 1200 1200 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1800 600 2400 600 2400 1200 1800 1200 1800 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2400 600 3000 600 3000 1200 2400 1200 2400 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3000 600 3600 600 3600 1200 3000 1200 3000 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3600 600 4200 600 4200 1200 3600 1200 3600 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4200 600 4800 600 4800 1200 4200 1200 4200 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4800 600 5400 600 5400 1200 4800 1200 4800 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 5400 600 6000 600 6000 1200 5400 1200 5400 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6000 600 6600 600 6600 1200 6000 1200 6000 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6600 600 7200 600 7200 1200 6600 1200 6600 600
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 5700 1950 3900 2775
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 6300 1950 7500 2850
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 3300 3075 2550 3975
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 3900 3075 4650 3975
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 2250 4500 1875 5100
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 2625 4425 3000 5100
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 4650 4500 4275 5100
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7575 3225 7275 3900
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 8025 3225 8325 3900
+4 1 0 50 -1 2 20 0.0000 0 210 300 3300 975 12\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 5700 975 10\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 4500 975 2\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 2400 4275 12\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 7200 4275 2\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 1800 5475 10\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 6300 975 6\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 3000 5475 6\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 4800 4275 7\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 4200 5475 4\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 6900 975 4\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 3900 975 7\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 7800 3075 8\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 8400 4275 5\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 2700 975 8\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 5100 975 5\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 3600 3000 1\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 6000 1875 16\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 1500 975 16\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 2100 975 1\001
diff --git a/lessons/tris/figures/etape_1_2b.eps b/lessons/tris/figures/etape_1_2b.eps
new file mode 100644
index 0000000000000000000000000000000000000000..6e47f1e84847adbd660acffd00eb5793d4822c36
--- /dev/null
+++ b/lessons/tris/figures/etape_1_2b.eps
@@ -0,0 +1,259 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: etape_1_2.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 4
+%%CreationDate: Mon May  9 11:54:09 2005
+%%For: lazeyras@eig3 (LAZEYRAS Michel - EIG prof)
+%%BoundingBox: 0 0 452 308
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 308 moveto 0 0 lineto 452 0 lineto 452 308 lineto closepath clip newpath
+-71.3 343.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+ /DrawEllipse {
+	/endangle exch def
+	/startangle exch def
+	/yrad exch def
+	/xrad exch def
+	/y exch def
+	/x exch def
+	/savematrix mtrx currentmatrix def
+	x y tr xrad yrad sc 0 0 1 startangle endangle arc
+	closepath
+	savematrix setmatrix
+	} def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% 
+% here starts figure with depth 50
+% Polyline
+7.500 slw
+n 2625 4425 m
+ 3000 5100 l gs col0 s gr 
+% Polyline
+n 4650 4500 m
+ 4275 5100 l gs col0 s gr 
+% Polyline
+n 7575 3225 m
+ 7275 3900 l gs col0 s gr 
+% Polyline
+n 8025 3225 m
+ 8325 3900 l gs col0 s gr 
+/Times-Bold ff 300.00 scf sf
+3300 975 m
+gs 1 -1 sc (12) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+5700 975 m
+gs 1 -1 sc (10) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+4500 975 m
+gs 1 -1 sc (2) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2400 4275 m
+gs 1 -1 sc (12) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+7200 4275 m
+gs 1 -1 sc (2) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+1800 5475 m
+gs 1 -1 sc (10) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6300 975 m
+gs 1 -1 sc (6) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3000 5475 m
+gs 1 -1 sc (6) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+4800 4275 m
+gs 1 -1 sc (7) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+4200 5475 m
+gs 1 -1 sc (4) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6900 975 m
+gs 1 -1 sc (4) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3900 975 m
+gs 1 -1 sc (7) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+7800 3075 m
+gs 1 -1 sc (8) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+8400 4275 m
+gs 1 -1 sc (5) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2700 975 m
+gs 1 -1 sc (8) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+5100 975 m
+gs 1 -1 sc (5) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3600 3000 m
+gs 1 -1 sc (1) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6000 1875 m
+gs 1 -1 sc (16) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+1500 975 m
+gs 1 -1 sc (16) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2100 975 m
+gs 1 -1 sc (1) dup sw pop 2 div neg 0 rm  col0 sh gr
+% Polyline
+n 2250 4500 m
+ 1875 5100 l gs col0 s gr 
+% Ellipse
+n 6000 1800 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 3600 2925 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 4800 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 2400 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 4200 5400 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 1800 5400 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 3000 5400 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7200 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 8400 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 3000 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Polyline
+n 1200 600 m 1800 600 l 1800 1200 l 1200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 1800 600 m 2400 600 l 2400 1200 l 1800 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 600 m 3000 600 l 3000 1200 l 2400 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 3000 600 m 3600 600 l 3600 1200 l 3000 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 3600 600 m 4200 600 l 4200 1200 l 3600 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 4200 600 m 4800 600 l 4800 1200 l 4200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 4800 600 m 5400 600 l 5400 1200 l 4800 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 5400 600 m 6000 600 l 6000 1200 l 5400 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 6000 600 m 6600 600 l 6600 1200 l 6000 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 6600 600 m 7200 600 l 7200 1200 l 6600 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 5700 1950 m
+ 3900 2775 l gs col0 s gr 
+% Polyline
+n 6300 1950 m
+ 7500 2850 l gs col0 s gr 
+% Polyline
+n 3300 3075 m
+ 2550 3975 l gs col0 s gr 
+% Polyline
+n 3900 3075 m
+ 4650 3975 l gs col0 s gr 
+% here ends figure;
+$F2psEnd
+rs
+showpage
diff --git a/lessons/tris/figures/etape_1_3.eps b/lessons/tris/figures/etape_1_3.eps
new file mode 100644
index 0000000000000000000000000000000000000000..70755d83868aba0fc9aaf391c68477fc47677a76
--- /dev/null
+++ b/lessons/tris/figures/etape_1_3.eps
@@ -0,0 +1,263 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: etape_1_3.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 4
+%%CreationDate: Mon May  9 11:28:21 2005
+%%For: lazeyras@eig3 (LAZEYRAS Michel - EIG prof)
+%%BoundingBox: 0 0 452 309
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 309 moveto 0 0 lineto 452 0 lineto 452 309 lineto closepath clip newpath
+-71.3 343.9 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+ /DrawEllipse {
+	/endangle exch def
+	/startangle exch def
+	/yrad exch def
+	/xrad exch def
+	/y exch def
+	/x exch def
+	/savematrix mtrx currentmatrix def
+	x y tr xrad yrad sc 0 0 1 startangle endangle arc
+	closepath
+	savematrix setmatrix
+	} def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% 
+% here starts figure with depth 50
+% Polyline
+7.500 slw
+n 8025 3225 m
+ 8325 3900 l gs col0 s gr 
+% Polyline
+30.000 slw
+n 5700 1950 m
+ 3900 2775 l gs col0 s gr 
+% Polyline
+n 3300 3075 m
+ 2550 3975 l gs col0 s gr 
+% Polyline
+n 2250 4500 m
+ 1875 5100 l gs col0 s gr 
+/Times-Bold ff 300.00 scf sf
+4500 975 m
+gs 1 -1 sc (2) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+7200 4275 m
+gs 1 -1 sc (2) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6300 975 m
+gs 1 -1 sc (6) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3000 5475 m
+gs 1 -1 sc (6) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+4800 4275 m
+gs 1 -1 sc (7) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+4200 5475 m
+gs 1 -1 sc (4) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6900 975 m
+gs 1 -1 sc (4) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3900 975 m
+gs 1 -1 sc (7) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+7800 3075 m
+gs 1 -1 sc (8) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+8400 4275 m
+gs 1 -1 sc (5) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2700 975 m
+gs 1 -1 sc (8) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+5100 975 m
+gs 1 -1 sc (5) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6000 1875 m
+gs 1 -1 sc (16) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3600 3000 m
+gs 1 -1 sc (12) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2400 4275 m
+gs 1 -1 sc (10) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+1800 5475 m
+gs 1 -1 sc (1) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+1500 975 m
+gs 1 -1 sc (16) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2100 975 m
+gs 1 -1 sc (12) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3300 975 m
+gs 1 -1 sc (10) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+5700 975 m
+gs 1 -1 sc (1) dup sw pop 2 div neg 0 rm  col0 sh gr
+% Polyline
+7.500 slw
+n 7575 3225 m
+ 7275 3900 l gs col0 s gr 
+% Ellipse
+n 4800 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 4200 5400 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 3000 5400 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7200 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 3000 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 8400 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+30.000 slw
+n 6000 1800 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 3600 2925 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 2400 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 1800 5400 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Polyline
+7.500 slw
+n 1200 600 m 1800 600 l 1800 1200 l 1200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 1800 600 m 2400 600 l 2400 1200 l 1800 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 600 m 3000 600 l 3000 1200 l 2400 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 3000 600 m 3600 600 l 3600 1200 l 3000 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 3600 600 m 4200 600 l 4200 1200 l 3600 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 4200 600 m 4800 600 l 4800 1200 l 4200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 4800 600 m 5400 600 l 5400 1200 l 4800 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 5400 600 m 6000 600 l 6000 1200 l 5400 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 6000 600 m 6600 600 l 6600 1200 l 6000 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 6600 600 m 7200 600 l 7200 1200 l 6600 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 6300 1950 m
+ 7500 2850 l gs col0 s gr 
+% Polyline
+n 3900 3075 m
+ 4650 3975 l gs col0 s gr 
+% Polyline
+n 2625 4425 m
+ 3000 5100 l gs col0 s gr 
+% Polyline
+n 4650 4500 m
+ 4275 5100 l gs col0 s gr 
+% here ends figure;
+$F2psEnd
+rs
+showpage
diff --git a/lessons/tris/figures/etape_1_3.fig b/lessons/tris/figures/etape_1_3.fig
new file mode 100644
index 0000000000000000000000000000000000000000..c175cc9a4587bda48ad111bf26265d2f8b95dd65
--- /dev/null
+++ b/lessons/tris/figures/etape_1_3.fig
@@ -0,0 +1,77 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4800 4200 309 309 4800 4200 4875 4500
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4200 5400 309 309 4200 5400 4275 5700
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3000 5400 309 309 3000 5400 3075 5700
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7200 4200 309 309 7200 4200 7509 4200
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7800 3000 309 309 7800 3000 8109 3000
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 8400 4200 309 309 8400 4200 8709 4200
+1 3 0 3 0 7 50 -1 -1 0.000 1 0.0000 6000 1800 309 309 6000 1800 6309 1800
+1 3 0 3 0 7 50 -1 -1 0.000 1 0.0000 3600 2925 309 309 3600 2925 3909 2925
+1 3 0 3 0 7 50 -1 -1 0.000 1 0.0000 2400 4200 309 309 2400 4200 2709 4200
+1 3 0 3 0 7 50 -1 -1 0.000 1 0.0000 1800 5400 309 309 1800 5400 2109 5400
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1200 600 1800 600 1800 1200 1200 1200 1200 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1800 600 2400 600 2400 1200 1800 1200 1800 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2400 600 3000 600 3000 1200 2400 1200 2400 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3000 600 3600 600 3600 1200 3000 1200 3000 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3600 600 4200 600 4200 1200 3600 1200 3600 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4200 600 4800 600 4800 1200 4200 1200 4200 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4800 600 5400 600 5400 1200 4800 1200 4800 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 5400 600 6000 600 6000 1200 5400 1200 5400 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6000 600 6600 600 6600 1200 6000 1200 6000 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6600 600 7200 600 7200 1200 6600 1200 6600 600
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 6300 1950 7500 2850
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 3900 3075 4650 3975
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 2625 4425 3000 5100
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 4650 4500 4275 5100
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7575 3225 7275 3900
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 8025 3225 8325 3900
+2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 5700 1950 3900 2775
+2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 3300 3075 2550 3975
+2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 2250 4500 1875 5100
+4 1 0 50 -1 2 20 0.0000 0 210 150 4500 975 2\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 7200 4275 2\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 6300 975 6\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 3000 5475 6\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 4800 4275 7\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 4200 5475 4\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 6900 975 4\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 3900 975 7\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 7800 3075 8\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 8400 4275 5\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 2700 975 8\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 5100 975 5\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 6000 1875 16\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 3600 3000 12\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 2400 4275 10\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 1800 5475 1\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 1500 975 16\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 2100 975 12\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 3300 975 10\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 5700 975 1\001
diff --git a/lessons/tris/figures/etape_2_1.eps b/lessons/tris/figures/etape_2_1.eps
new file mode 100644
index 0000000000000000000000000000000000000000..c8bc2116467d0f585d4da2d087d03104c76f5629
--- /dev/null
+++ b/lessons/tris/figures/etape_2_1.eps
@@ -0,0 +1,252 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: etape_2_1.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 4
+%%CreationDate: Mon May  9 11:33:45 2005
+%%For: lazeyras@eig3 (LAZEYRAS Michel - EIG prof)
+%%BoundingBox: 0 0 452 309
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 309 moveto 0 0 lineto 452 0 lineto 452 309 lineto closepath clip newpath
+-71.3 343.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+ /DrawEllipse {
+	/endangle exch def
+	/startangle exch def
+	/yrad exch def
+	/xrad exch def
+	/y exch def
+	/x exch def
+	/savematrix mtrx currentmatrix def
+	x y tr xrad yrad sc 0 0 1 startangle endangle arc
+	closepath
+	savematrix setmatrix
+	} def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% 
+% here starts figure with depth 50
+% Polyline
+7.500 slw
+n 3300 3075 m
+ 2550 3975 l gs col0 s gr 
+% Polyline
+n 5700 1950 m
+ 3900 2775 l gs col0 s gr 
+% Polyline
+30.000 slw
+n 6600 600 m 7200 600 l 7200 1200 l 6600 1200 l
+ cp gs col0 s gr 
+/Times-Bold ff 300.00 scf sf
+4500 975 m
+gs 1 -1 sc (2) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+7200 4275 m
+gs 1 -1 sc (2) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+4800 4275 m
+gs 1 -1 sc (7) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3900 975 m
+gs 1 -1 sc (7) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+7800 3075 m
+gs 1 -1 sc (8) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+8400 4275 m
+gs 1 -1 sc (5) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2700 975 m
+gs 1 -1 sc (8) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+5100 975 m
+gs 1 -1 sc (5) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+1800 5475 m
+gs 1 -1 sc (1) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+5700 975 m
+gs 1 -1 sc (1) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6900 975 m
+gs 1 -1 sc (16) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6000 1875 m
+gs 1 -1 sc (12) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3600 3000 m
+gs 1 -1 sc (10) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2400 4275 m
+gs 1 -1 sc (6) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+1500 975 m
+gs 1 -1 sc (12) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2100 975 m
+gs 1 -1 sc (10) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3300 975 m
+gs 1 -1 sc (6) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3000 5475 m
+gs 1 -1 sc (4) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6300 975 m
+gs 1 -1 sc (4) dup sw pop 2 div neg 0 rm  col0 sh gr
+% Polyline
+7.500 slw
+n 2250 4500 m
+ 1875 5100 l gs col0 s gr 
+% Ellipse
+n 4800 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 3000 5400 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7200 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 3000 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 8400 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 1800 5400 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 2400 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 3600 2925 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 6000 1800 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Polyline
+n 1200 600 m 1800 600 l 1800 1200 l 1200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 1800 600 m 2400 600 l 2400 1200 l 1800 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 600 m 3000 600 l 3000 1200 l 2400 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 3000 600 m 3600 600 l 3600 1200 l 3000 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 3600 600 m 4200 600 l 4200 1200 l 3600 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 4200 600 m 4800 600 l 4800 1200 l 4200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 4800 600 m 5400 600 l 5400 1200 l 4800 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 5400 600 m 6000 600 l 6000 1200 l 5400 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 6000 600 m 6600 600 l 6600 1200 l 6000 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 6300 1950 m
+ 7500 2850 l gs col0 s gr 
+% Polyline
+n 3900 3075 m
+ 4650 3975 l gs col0 s gr 
+% Polyline
+n 2625 4425 m
+ 3000 5100 l gs col0 s gr 
+% Polyline
+n 7575 3225 m
+ 7275 3900 l gs col0 s gr 
+% Polyline
+n 8025 3225 m
+ 8325 3900 l gs col0 s gr 
+% here ends figure;
+$F2psEnd
+rs
+showpage
diff --git a/lessons/tris/figures/etape_2_1.fig b/lessons/tris/figures/etape_2_1.fig
new file mode 100644
index 0000000000000000000000000000000000000000..6d23d4da24950ffe62d634ab9ff11d67ad1983bd
--- /dev/null
+++ b/lessons/tris/figures/etape_2_1.fig
@@ -0,0 +1,73 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4800 4200 309 309 4800 4200 4875 4500
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3000 5400 309 309 3000 5400 3075 5700
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7200 4200 309 309 7200 4200 7509 4200
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7800 3000 309 309 7800 3000 8109 3000
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 8400 4200 309 309 8400 4200 8709 4200
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1800 5400 309 309 1800 5400 2109 5400
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2400 4200 309 309 2400 4200 2709 4200
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3600 2925 309 309 3600 2925 3909 2925
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6000 1800 309 309 6000 1800 6309 1800
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1200 600 1800 600 1800 1200 1200 1200 1200 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1800 600 2400 600 2400 1200 1800 1200 1800 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2400 600 3000 600 3000 1200 2400 1200 2400 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3000 600 3600 600 3600 1200 3000 1200 3000 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3600 600 4200 600 4200 1200 3600 1200 3600 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4200 600 4800 600 4800 1200 4200 1200 4200 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4800 600 5400 600 5400 1200 4800 1200 4800 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 5400 600 6000 600 6000 1200 5400 1200 5400 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6000 600 6600 600 6600 1200 6000 1200 6000 600
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 6300 1950 7500 2850
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 3900 3075 4650 3975
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 2625 4425 3000 5100
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7575 3225 7275 3900
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 8025 3225 8325 3900
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 2250 4500 1875 5100
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 3300 3075 2550 3975
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 5700 1950 3900 2775
+2 2 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6600 600 7200 600 7200 1200 6600 1200 6600 600
+4 1 0 50 -1 2 20 0.0000 0 210 150 4500 975 2\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 7200 4275 2\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 4800 4275 7\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 3900 975 7\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 7800 3075 8\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 8400 4275 5\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 2700 975 8\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 5100 975 5\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 1800 5475 1\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 5700 975 1\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 6900 975 16\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 6000 1875 12\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 3600 3000 10\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 2400 4275 6\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 1500 975 12\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 2100 975 10\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 3300 975 6\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 3000 5475 4\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 6300 975 4\001
diff --git a/lessons/tris/figures/etape_2_2.eps b/lessons/tris/figures/etape_2_2.eps
new file mode 100644
index 0000000000000000000000000000000000000000..9ded05d5260390c640b86cc1cfae31e70d1d3b9e
--- /dev/null
+++ b/lessons/tris/figures/etape_2_2.eps
@@ -0,0 +1,243 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: etape_2_2.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 4
+%%CreationDate: Mon May  9 11:33:13 2005
+%%For: lazeyras@eig3 (LAZEYRAS Michel - EIG prof)
+%%BoundingBox: 0 0 452 309
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 309 moveto 0 0 lineto 452 0 lineto 452 309 lineto closepath clip newpath
+-71.3 343.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+ /DrawEllipse {
+	/endangle exch def
+	/startangle exch def
+	/yrad exch def
+	/xrad exch def
+	/y exch def
+	/x exch def
+	/savematrix mtrx currentmatrix def
+	x y tr xrad yrad sc 0 0 1 startangle endangle arc
+	closepath
+	savematrix setmatrix
+	} def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% 
+% here starts figure with depth 50
+% Polyline
+7.500 slw
+n 5700 1950 m
+ 3900 2775 l gs col0 s gr 
+% Polyline
+30.000 slw
+n 6000 600 m 6600 600 l 6600 1200 l 6000 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 6600 600 m 7200 600 l 7200 1200 l 6600 1200 l
+ cp gs col0 s gr 
+/Times-Bold ff 300.00 scf sf
+4500 975 m
+gs 1 -1 sc (2) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+7200 4275 m
+gs 1 -1 sc (2) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+7800 3075 m
+gs 1 -1 sc (8) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+8400 4275 m
+gs 1 -1 sc (5) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2700 975 m
+gs 1 -1 sc (8) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+5100 975 m
+gs 1 -1 sc (5) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+1800 5475 m
+gs 1 -1 sc (1) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+5700 975 m
+gs 1 -1 sc (1) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6900 975 m
+gs 1 -1 sc (16) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2400 4275 m
+gs 1 -1 sc (6) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3300 975 m
+gs 1 -1 sc (6) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6000 1875 m
+gs 1 -1 sc (10) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3600 3000 m
+gs 1 -1 sc (7) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+4800 4275 m
+gs 1 -1 sc (4) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6300 975 m
+gs 1 -1 sc (12) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+1500 975 m
+gs 1 -1 sc (10) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2100 975 m
+gs 1 -1 sc (7) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3900 975 m
+gs 1 -1 sc (4) dup sw pop 2 div neg 0 rm  col0 sh gr
+% Polyline
+7.500 slw
+n 3300 3075 m
+ 2550 3975 l gs col0 s gr 
+% Ellipse
+n 4800 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7200 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 3000 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 8400 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 1800 5400 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 2400 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 3600 2925 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 6000 1800 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Polyline
+n 1200 600 m 1800 600 l 1800 1200 l 1200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 1800 600 m 2400 600 l 2400 1200 l 1800 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 600 m 3000 600 l 3000 1200 l 2400 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 3000 600 m 3600 600 l 3600 1200 l 3000 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 3600 600 m 4200 600 l 4200 1200 l 3600 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 4200 600 m 4800 600 l 4800 1200 l 4200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 4800 600 m 5400 600 l 5400 1200 l 4800 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 5400 600 m 6000 600 l 6000 1200 l 5400 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 6300 1950 m
+ 7500 2850 l gs col0 s gr 
+% Polyline
+n 3900 3075 m
+ 4650 3975 l gs col0 s gr 
+% Polyline
+n 7575 3225 m
+ 7275 3900 l gs col0 s gr 
+% Polyline
+n 8025 3225 m
+ 8325 3900 l gs col0 s gr 
+% Polyline
+n 2250 4500 m
+ 1875 5100 l gs col0 s gr 
+% here ends figure;
+$F2psEnd
+rs
+showpage
diff --git a/lessons/tris/figures/etape_2_2.fig b/lessons/tris/figures/etape_2_2.fig
new file mode 100644
index 0000000000000000000000000000000000000000..a8fc12a4d3c3d9dfa77e76db8a0b733196d57415
--- /dev/null
+++ b/lessons/tris/figures/etape_2_2.fig
@@ -0,0 +1,69 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4800 4200 309 309 4800 4200 4875 4500
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7200 4200 309 309 7200 4200 7509 4200
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7800 3000 309 309 7800 3000 8109 3000
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 8400 4200 309 309 8400 4200 8709 4200
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1800 5400 309 309 1800 5400 2109 5400
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2400 4200 309 309 2400 4200 2709 4200
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3600 2925 309 309 3600 2925 3909 2925
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6000 1800 309 309 6000 1800 6309 1800
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1200 600 1800 600 1800 1200 1200 1200 1200 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1800 600 2400 600 2400 1200 1800 1200 1800 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2400 600 3000 600 3000 1200 2400 1200 2400 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3000 600 3600 600 3600 1200 3000 1200 3000 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3600 600 4200 600 4200 1200 3600 1200 3600 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4200 600 4800 600 4800 1200 4200 1200 4200 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4800 600 5400 600 5400 1200 4800 1200 4800 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 5400 600 6000 600 6000 1200 5400 1200 5400 600
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 6300 1950 7500 2850
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 3900 3075 4650 3975
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7575 3225 7275 3900
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 8025 3225 8325 3900
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 2250 4500 1875 5100
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 3300 3075 2550 3975
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 5700 1950 3900 2775
+2 2 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6000 600 6600 600 6600 1200 6000 1200 6000 600
+2 2 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6600 600 7200 600 7200 1200 6600 1200 6600 600
+4 1 0 50 -1 2 20 0.0000 0 210 150 4500 975 2\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 7200 4275 2\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 7800 3075 8\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 8400 4275 5\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 2700 975 8\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 5100 975 5\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 1800 5475 1\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 5700 975 1\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 6900 975 16\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 2400 4275 6\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 3300 975 6\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 6000 1875 10\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 3600 3000 7\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 4800 4275 4\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 6300 975 12\001
+4 1 0 50 -1 2 20 0.0000 0 210 300 1500 975 10\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 2100 975 7\001
+4 1 0 50 -1 2 20 0.0000 0 210 150 3900 975 4\001
diff --git a/lessons/tris/figures/etape_2_3.eps b/lessons/tris/figures/etape_2_3.eps
new file mode 100644
index 0000000000000000000000000000000000000000..638fd87a624aa081e958b4a9b687984c6d5d6ac6
--- /dev/null
+++ b/lessons/tris/figures/etape_2_3.eps
@@ -0,0 +1,233 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: etape_2_3.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 4
+%%CreationDate: Thu May 19 09:04:12 2005
+%%For: lazeyras@eig3 (LAZEYRAS Michel - EIG prof)
+%%BoundingBox: 0 0 452 237
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 237 moveto 0 0 lineto 452 0 lineto 452 237 lineto closepath clip newpath
+-71.3 271.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+ /DrawEllipse {
+	/endangle exch def
+	/startangle exch def
+	/yrad exch def
+	/xrad exch def
+	/y exch def
+	/x exch def
+	/savematrix mtrx currentmatrix def
+	x y tr xrad yrad sc 0 0 1 startangle endangle arc
+	closepath
+	savematrix setmatrix
+	} def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% 
+% here starts figure with depth 50
+% Polyline
+30.000 slw
+n 6600 600 m 7200 600 l 7200 1200 l 6600 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 5400 600 m 6000 600 l 6000 1200 l 5400 1200 l
+ cp gs col0 s gr 
+/Times-Bold ff 300.00 scf sf
+4500 975 m
+gs 1 -1 sc (2) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+7200 4275 m
+gs 1 -1 sc (2) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6900 975 m
+gs 1 -1 sc (16) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2400 4275 m
+gs 1 -1 sc (6) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3300 975 m
+gs 1 -1 sc (6) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3600 3000 m
+gs 1 -1 sc (7) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+4800 4275 m
+gs 1 -1 sc (4) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6300 975 m
+gs 1 -1 sc (12) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2100 975 m
+gs 1 -1 sc (7) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+3900 975 m
+gs 1 -1 sc (4) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+5700 975 m
+gs 1 -1 sc (10) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+6000 1875 m
+gs 1 -1 sc (8) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+7800 3075 m
+gs 1 -1 sc (5) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+8400 4275 m
+gs 1 -1 sc (1) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+1500 975 m
+gs 1 -1 sc (8) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+2700 975 m
+gs 1 -1 sc (5) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold ff 300.00 scf sf
+5100 975 m
+gs 1 -1 sc (1) dup sw pop 2 div neg 0 rm  col0 sh gr
+% Polyline
+n 6000 600 m 6600 600 l 6600 1200 l 6000 1200 l
+ cp gs col0 s gr 
+% Ellipse
+7.500 slw
+n 4800 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7200 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 3000 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 8400 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 2400 4200 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 3600 2925 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 6000 1800 309 309 0 360 DrawEllipse gs col0 s gr
+
+% Polyline
+n 1200 600 m 1800 600 l 1800 1200 l 1200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 1800 600 m 2400 600 l 2400 1200 l 1800 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 600 m 3000 600 l 3000 1200 l 2400 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 3000 600 m 3600 600 l 3600 1200 l 3000 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 3600 600 m 4200 600 l 4200 1200 l 3600 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 4200 600 m 4800 600 l 4800 1200 l 4200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 4800 600 m 5400 600 l 5400 1200 l 4800 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 6300 1950 m
+ 7500 2850 l gs col0 s gr 
+% Polyline
+n 3900 3075 m
+ 4650 3975 l gs col0 s gr 
+% Polyline
+n 7575 3225 m
+ 7275 3900 l gs col0 s gr 
+% Polyline
+n 8025 3225 m
+ 8325 3900 l gs col0 s gr 
+% Polyline
+n 3300 3075 m
+ 2550 3975 l gs col0 s gr 
+% Polyline
+n 5700 1950 m
+ 3900 2775 l gs col0 s gr 
+% here ends figure;
+$F2psEnd
+rs
+showpage
diff --git a/lessons/tris/figures/etape_2_3.fig b/lessons/tris/figures/etape_2_3.fig
new file mode 100644
index 0000000000000000000000000000000000000000..6db4b3dc227474dc03f10d3c2e02dd3816cb2018
--- /dev/null
+++ b/lessons/tris/figures/etape_2_3.fig
@@ -0,0 +1,65 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4800 4200 309 309 4800 4200 4875 4500
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7200 4200 309 309 7200 4200 7509 4200
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7800 3000 309 309 7800 3000 8109 3000
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 8400 4200 309 309 8400 4200 8709 4200
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2400 4200 309 309 2400 4200 2709 4200
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3600 2925 309 309 3600 2925 3909 2925
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6000 1800 309 309 6000 1800 6309 1800
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1200 600 1800 600 1800 1200 1200 1200 1200 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1800 600 2400 600 2400 1200 1800 1200 1800 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2400 600 3000 600 3000 1200 2400 1200 2400 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3000 600 3600 600 3600 1200 3000 1200 3000 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3600 600 4200 600 4200 1200 3600 1200 3600 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4200 600 4800 600 4800 1200 4200 1200 4200 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4800 600 5400 600 5400 1200 4800 1200 4800 600
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 6300 1950 7500 2850
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 3900 3075 4650 3975
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7575 3225 7275 3900
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 8025 3225 8325 3900
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 3300 3075 2550 3975
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 5700 1950 3900 2775
+2 2 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6000 600 6600 600 6600 1200 6000 1200 6000 600
+2 2 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6600 600 7200 600 7200 1200 6600 1200 6600 600
+2 2 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 5400 600 6000 600 6000 1200 5400 1200 5400 600
+4 1 0 50 -1 2 20 0.0000 0 195 135 4500 975 2\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 7200 4275 2\001
+4 1 0 50 -1 2 20 0.0000 0 195 270 6900 975 16\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 2400 4275 6\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 3300 975 6\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 3600 3000 7\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 4800 4275 4\001
+4 1 0 50 -1 2 20 0.0000 0 195 270 6300 975 12\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 2100 975 7\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 3900 975 4\001
+4 1 0 50 -1 2 20 0.0000 0 195 270 5700 975 10\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 6000 1875 8\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 7800 3075 5\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 8400 4275 1\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 1500 975 8\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 2700 975 5\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 5100 975 1\001
diff --git a/lessons/tris/figures/quicksort.eps b/lessons/tris/figures/quicksort.eps
new file mode 100644
index 0000000000000000000000000000000000000000..a88dd4d773f89b1ab29fb077ffb35fdac9ffdcfb
--- /dev/null
+++ b/lessons/tris/figures/quicksort.eps
@@ -0,0 +1,324 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: quicksort.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 4
+%%CreationDate: Sat May  7 00:48:49 2005
+%%For: albuquer@liiEvo800 (Albuquerque Paul)
+%%BoundingBox: 0 0 257 291
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 291 moveto 0 0 lineto 257 0 lineto 257 291 lineto closepath clip newpath
+-68.9 345.6 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/reencdict 12 dict def /ReEncode { reencdict begin
+/newcodesandnames exch def /newfontname exch def /basefontname exch def
+/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def
+basefontdict { exch dup /FID ne { dup /Encoding eq
+{ exch dup length array copy newfont 3 1 roll put }
+{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
+newfont /FontName newfontname put newcodesandnames aload pop
+128 1 255 { newfont /Encoding get exch /.notdef put } for
+newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
+newfontname newfont definefont pop end } def
+/isovec [
+8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
+8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
+8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
+8#220 /dotlessi 8#230 /oe 8#231 /OE
+8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
+8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
+8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
+8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
+8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
+8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
+8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
+8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
+8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
+8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
+8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
+8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
+8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
+8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
+8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
+8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
+8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
+8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
+8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
+8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
+8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
+8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
+/Times-Roman /Times-Roman-iso isovec ReEncode
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% 
+% here starts figure with depth 90
+% Polyline
+15.000 slw
+n 3600 2400 m 4200 2400 l 4200 3000 l 3600 3000 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 4800 1200 m 5400 1200 l 5400 1800 l 4800 1800 l
+ cp gs col0 s gr 
+% Polyline
+n 3600 3600 m 4200 3600 l 4200 4200 l 3600 4200 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 4200 3600 m 4800 3600 l 4800 4200 l 4200 4200 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 3600 m 3000 3600 l 3000 4200 l 2400 4200 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 3000 3600 m 3600 3600 l 3600 4200 l 3000 4200 l
+ cp gs col0 s gr 
+% Polyline
+n 4800 3600 m 5400 3600 l 5400 4200 l 4800 4200 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+/Times-Roman-iso ff 300.00 scf sf
+4995 1110 m
+gs 1 -1 sc (P) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+5010 2310 m
+gs 1 -1 sc (P) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3210 2310 m
+gs 1 -1 sc (P) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2010 3540 m
+gs 1 -1 sc (P) col0 sh gr
+% Polyline
+n 4770 4770 m 5370 4770 l 5370 5370 l 4770 5370 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 4170 4770 m 4770 4770 l 4770 5370 l 4170 5370 l
+ cp gs col0 s gr 
+% Polyline
+n 3570 4770 m 4170 4770 l 4170 5370 l 3570 5370 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 2970 4770 m 3570 4770 l 3570 5370 l 2970 5370 l
+ cp gs col0 s gr 
+% Polyline
+n 2370 4770 m 2970 4770 l 2970 5370 l 2370 5370 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 1770 4770 m 2370 4770 l 2370 5370 l 1770 5370 l
+ cp gs col0 s gr 
+% Polyline
+n 1170 4770 m 1770 4770 l 1770 5370 l 1170 5370 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+/Times-Roman-iso ff 300.00 scf sf
+2670 5760 m
+gs 1 -1 sc (suite tri\351e) col0 sh gr
+% here ends figure;
+% 
+% here starts figure with depth 50
+% Polyline
+15.000 slw
+n 1200 2400 m 1800 2400 l 1800 3000 l 1200 3000 l
+ cp gs col0 s gr 
+% Polyline
+n 1800 2400 m 2400 2400 l 2400 3000 l 1800 3000 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 2400 m 3000 2400 l 3000 3000 l 2400 3000 l
+ cp gs col0 s gr 
+% Polyline
+n 4200 2400 m 4800 2400 l 4800 3000 l 4200 3000 l
+ cp gs col0 s gr 
+% Polyline
+n 1200 3600 m 1800 3600 l 1800 4200 l 1200 4200 l
+ cp gs col0 s gr 
+% Polyline
+n 1800 3600 m 2400 3600 l 2400 4200 l 1800 4200 l
+ cp gs col0 s gr 
+% Polyline
+n 4800 2400 m 5400 2400 l 5400 3000 l 4800 3000 l
+ cp gs col0 s gr 
+% Polyline
+n 3000 2400 m 3600 2400 l 3600 3000 l 3000 3000 l
+ cp gs col0 s gr 
+% Polyline
+n 1200 1200 m 1800 1200 l 1800 1800 l 1200 1800 l
+ cp gs col0 s gr 
+% Polyline
+n 1800 1200 m 2400 1200 l 2400 1800 l 1800 1800 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 1200 m 3000 1200 l 3000 1800 l 2400 1800 l
+ cp gs col0 s gr 
+% Polyline
+n 3000 1200 m 3600 1200 l 3600 1800 l 3000 1800 l
+ cp gs col0 s gr 
+% Polyline
+n 3600 1200 m 4200 1200 l 4200 1800 l 3600 1800 l
+ cp gs col0 s gr 
+% Polyline
+n 4200 1200 m 4800 1200 l 4800 1800 l 4200 1800 l
+ cp gs col0 s gr 
+/Times-Roman-iso ff 300.00 scf sf
+1425 2775 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2025 2790 m
+gs 1 -1 sc (1) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1425 3975 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2025 3990 m
+gs 1 -1 sc (1) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3675 2775 m
+gs 1 -1 sc (12) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4950 2775 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4350 2775 m
+gs 1 -1 sc (31) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1425 1575 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2535 1575 m
+gs 1 -1 sc (31) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2025 1590 m
+gs 1 -1 sc (1) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3120 1590 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3795 1575 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4425 1575 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4920 1575 m
+gs 1 -1 sc (12) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2595 2790 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3180 2790 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3675 3975 m
+gs 1 -1 sc (12) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4935 3990 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4365 3960 m
+gs 1 -1 sc (31) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3180 3975 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2565 3975 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1380 5145 m
+gs 1 -1 sc (1) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1965 5130 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2550 5130 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3180 5115 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3675 5130 m
+gs 1 -1 sc (12) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4920 5130 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4290 5130 m
+gs 1 -1 sc (31) col0 sh gr
+% here ends figure;
+$F2psEnd
+rs
+showpage
diff --git a/lessons/tris/figures/quicksort.fig b/lessons/tris/figures/quicksort.fig
new file mode 100644
index 0000000000000000000000000000000000000000..917e033c99c4e4912cd5bc97b6330b83407d26ee
--- /dev/null
+++ b/lessons/tris/figures/quicksort.fig
@@ -0,0 +1,102 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 1185 915 5415 4215
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 1200 2400 1800 2400 1800 3000 1200 3000 1200 2400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 1800 2400 2400 2400 2400 3000 1800 3000 1800 2400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 2400 2400 3000 2400 3000 3000 2400 3000 2400 2400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 4200 2400 4800 2400 4800 3000 4200 3000 4200 2400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 1200 3600 1800 3600 1800 4200 1200 4200 1200 3600
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 1800 3600 2400 3600 2400 4200 1800 4200 1800 3600
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 4800 2400 5400 2400 5400 3000 4800 3000 4800 2400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 3000 2400 3600 2400 3600 3000 3000 3000 3000 2400
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 3600 2400 4200 2400 4200 3000 3600 3000 3600 2400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 1200 1200 1800 1200 1800 1800 1200 1800 1200 1200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 1800 1200 2400 1200 2400 1800 1800 1800 1800 1200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 2400 1200 3000 1200 3000 1800 2400 1800 2400 1200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 3000 1200 3600 1200 3600 1800 3000 1800 3000 1200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 3600 1200 4200 1200 4200 1800 3600 1800 3600 1200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 4200 1200 4800 1200 4800 1800 4200 1800 4200 1200
+2 2 0 2 0 11 90 -1 -1 0.000 0 0 7 0 0 5
+	 4800 1200 5400 1200 5400 1800 4800 1800 4800 1200
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 3600 3600 4200 3600 4200 4200 3600 4200 3600 3600
+2 2 0 2 0 11 90 -1 -1 0.000 0 0 7 0 0 5
+	 4200 3600 4800 3600 4800 4200 4200 4200 4200 3600
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 2400 3600 3000 3600 3000 4200 2400 4200 2400 3600
+2 2 0 2 0 11 90 -1 -1 0.000 0 0 7 0 0 5
+	 3000 3600 3600 3600 3600 4200 3000 4200 3000 3600
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 4800 3600 5400 3600 5400 4200 4800 4200 4800 3600
+4 0 0 50 -1 0 20 0.0000 4 225 150 1425 2775 3\001
+4 0 0 50 -1 0 20 0.0000 4 225 150 2025 2790 1\001
+4 0 0 50 -1 0 20 0.0000 4 225 150 1425 3975 3\001
+4 0 0 50 -1 0 20 0.0000 4 225 150 2025 3990 1\001
+4 0 0 50 -1 0 20 0.0000 4 225 300 3675 2775 12\001
+4 0 0 50 -1 0 20 0.0000 4 225 300 4950 2775 41\001
+4 0 0 50 -1 0 20 0.0000 4 255 300 4350 2775 31\001
+4 0 0 50 -1 0 20 0.0000 4 225 150 1425 1575 3\001
+4 0 0 50 -1 0 20 0.0000 4 255 300 2535 1575 31\001
+4 0 0 50 -1 0 20 0.0000 4 225 150 2025 1590 1\001
+4 0 0 50 -1 0 20 0.0000 4 225 300 3120 1590 41\001
+4 0 0 50 -1 0 20 0.0000 4 225 150 3795 1575 5\001
+4 0 0 50 -1 0 20 0.0000 4 195 150 4425 1575 7\001
+4 0 0 50 -1 0 20 0.0000 4 225 300 4920 1575 12\001
+4 0 0 90 -1 0 20 0.0000 4 195 165 4995 1110 P\001
+4 0 0 90 -1 0 20 0.0000 4 195 165 5010 2310 P\001
+4 0 0 90 -1 0 20 0.0000 4 195 165 3210 2310 P\001
+4 0 0 50 -1 0 20 0.0000 4 195 150 2595 2790 7\001
+4 0 0 50 -1 0 20 0.0000 4 225 150 3180 2790 5\001
+4 0 0 50 -1 0 20 0.0000 4 225 300 3675 3975 12\001
+4 0 0 50 -1 0 20 0.0000 4 225 300 4935 3990 41\001
+4 0 0 50 -1 0 20 0.0000 4 255 300 4365 3960 31\001
+4 0 0 50 -1 0 20 0.0000 4 195 150 3180 3975 7\001
+4 0 0 50 -1 0 20 0.0000 4 225 150 2565 3975 5\001
+4 0 0 90 -1 0 20 0.0000 4 195 165 2010 3540 P\001
+-6
+6 1155 4755 5385 5385
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 4770 4770 5370 4770 5370 5370 4770 5370 4770 4770
+2 2 0 2 0 11 90 -1 -1 0.000 0 0 7 0 0 5
+	 4170 4770 4770 4770 4770 5370 4170 5370 4170 4770
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 3570 4770 4170 4770 4170 5370 3570 5370 3570 4770
+2 2 0 2 0 11 90 -1 -1 0.000 0 0 7 0 0 5
+	 2970 4770 3570 4770 3570 5370 2970 5370 2970 4770
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 2370 4770 2970 4770 2970 5370 2370 5370 2370 4770
+2 2 0 2 0 11 90 -1 -1 0.000 0 0 7 0 0 5
+	 1770 4770 2370 4770 2370 5370 1770 5370 1770 4770
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 1170 4770 1770 4770 1770 5370 1170 5370 1170 4770
+4 0 0 50 -1 0 20 0.0000 4 225 150 1380 5145 1\001
+4 0 0 50 -1 0 20 0.0000 4 225 150 1965 5130 3\001
+4 0 0 50 -1 0 20 0.0000 4 225 150 2550 5130 5\001
+4 0 0 50 -1 0 20 0.0000 4 195 150 3180 5115 7\001
+4 0 0 50 -1 0 20 0.0000 4 225 300 3675 5130 12\001
+4 0 0 50 -1 0 20 0.0000 4 225 300 4920 5130 41\001
+4 0 0 50 -1 0 20 0.0000 4 255 300 4290 5130 31\001
+-6
+4 0 0 90 -1 0 20 0.0000 4 225 1215 2670 5760 suite tri\351e\001
diff --git a/lessons/tris/figures/tas.eps b/lessons/tris/figures/tas.eps
new file mode 100644
index 0000000000000000000000000000000000000000..13e4da5b666702045cc45a8f0259035c8c916460
--- /dev/null
+++ b/lessons/tris/figures/tas.eps
@@ -0,0 +1,273 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: tas.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 4
+%%CreationDate: Wed May 18 09:28:23 2005
+%%For: lazeyras@eig3 (LAZEYRAS Michel - EIG prof)
+%%BoundingBox: 0 0 362 184
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 184 moveto 0 0 lineto 362 0 lineto 362 184 lineto closepath clip newpath
+-71.3 193.6 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/reencdict 12 dict def /ReEncode { reencdict begin
+/newcodesandnames exch def /newfontname exch def /basefontname exch def
+/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def
+basefontdict { exch dup /FID ne { dup /Encoding eq
+{ exch dup length array copy newfont 3 1 roll put }
+{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
+newfont /FontName newfontname put newcodesandnames aload pop
+128 1 255 { newfont /Encoding get exch /.notdef put } for
+newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
+newfontname newfont definefont pop end } def
+/isovec [
+8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
+8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
+8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
+8#220 /dotlessi 8#230 /oe 8#231 /OE
+8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
+8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
+8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
+8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
+8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
+8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
+8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
+8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
+8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
+8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
+8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
+8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
+8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
+8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
+8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
+8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
+8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
+8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
+8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
+8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
+8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
+8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
+/Times-Bold /Times-Bold-iso isovec ReEncode
+/Times-Roman /Times-Roman-iso isovec ReEncode
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% 
+% here starts figure with depth 50
+/Times-Bold-iso ff 300.00 scf sf
+2700 975 m
+gs 1 -1 sc (14) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold-iso ff 300.00 scf sf
+3300 975 m
+gs 1 -1 sc (6) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold-iso ff 300.00 scf sf
+3900 975 m
+gs 1 -1 sc (2) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold-iso ff 300.00 scf sf
+4500 975 m
+gs 1 -1 sc (10) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold-iso ff 300.00 scf sf
+5100 975 m
+gs 1 -1 sc (12) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold-iso ff 300.00 scf sf
+5700 975 m
+gs 1 -1 sc (4) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold-iso ff 300.00 scf sf
+6300 975 m
+gs 1 -1 sc (5) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold-iso ff 300.00 scf sf
+6900 975 m
+gs 1 -1 sc (1) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold-iso ff 300.00 scf sf
+1500 975 m
+gs 1 -1 sc (16) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1200 375 m
+gs 1 -1 sc (Exemple de tableau formant un tas :) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1200 1875 m
+gs 1 -1 sc (Exemple de tableau ne formant pas un tas :) col0 sh gr
+/Times-Bold-iso ff 300.00 scf sf
+1500 2475 m
+gs 1 -1 sc (16) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold-iso ff 300.00 scf sf
+2100 2475 m
+gs 1 -1 sc (14) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold-iso ff 300.00 scf sf
+2700 2475 m
+gs 1 -1 sc (8) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold-iso ff 300.00 scf sf
+3300 2475 m
+gs 1 -1 sc (6) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold-iso ff 300.00 scf sf
+3900 2475 m
+gs 1 -1 sc (2) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold-iso ff 300.00 scf sf
+4500 2475 m
+gs 1 -1 sc (10) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold-iso ff 300.00 scf sf
+5100 2475 m
+gs 1 -1 sc (12) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold-iso ff 300.00 scf sf
+5700 2475 m
+gs 1 -1 sc (4) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold-iso ff 300.00 scf sf
+6300 2475 m
+gs 1 -1 sc (5) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Bold-iso ff 300.00 scf sf
+6900 2475 m
+gs 1 -1 sc (1) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1200 3150 m
+gs 1 -1 sc (car 10 > 8 et 12 > 8  \(10 et 12 \351tant des fils de 8\)) col0 sh gr
+/Times-Bold-iso ff 300.00 scf sf
+2100 975 m
+gs 1 -1 sc (8) dup sw pop 2 div neg 0 rm  col0 sh gr
+% Polyline
+7.500 slw
+n 1800 600 m 2400 600 l 2400 1200 l 1800 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 600 m 3000 600 l 3000 1200 l 2400 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 3000 600 m 3600 600 l 3600 1200 l 3000 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 3600 600 m 4200 600 l 4200 1200 l 3600 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 4200 600 m 4800 600 l 4800 1200 l 4200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 4800 600 m 5400 600 l 5400 1200 l 4800 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 5400 600 m 6000 600 l 6000 1200 l 5400 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 6000 600 m 6600 600 l 6600 1200 l 6000 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 6600 600 m 7200 600 l 7200 1200 l 6600 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 1200 600 m 1800 600 l 1800 1200 l 1200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 1200 600 m 1800 600 l 1800 1200 l 1200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 600 m 3000 600 l 3000 1200 l 2400 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 1200 2100 m 1800 2100 l 1800 2700 l 1200 2700 l
+ cp gs col0 s gr 
+% Polyline
+n 1800 2100 m 2400 2100 l 2400 2700 l 1800 2700 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 2100 m 3000 2100 l 3000 2700 l 2400 2700 l
+ cp gs col0 s gr 
+% Polyline
+n 3000 2100 m 3600 2100 l 3600 2700 l 3000 2700 l
+ cp gs col0 s gr 
+% Polyline
+n 3600 2100 m 4200 2100 l 4200 2700 l 3600 2700 l
+ cp gs col0 s gr 
+% Polyline
+n 4200 2100 m 4800 2100 l 4800 2700 l 4200 2700 l
+ cp gs col0 s gr 
+% Polyline
+n 4800 2100 m 5400 2100 l 5400 2700 l 4800 2700 l
+ cp gs col0 s gr 
+% Polyline
+n 5400 2100 m 6000 2100 l 6000 2700 l 5400 2700 l
+ cp gs col0 s gr 
+% Polyline
+n 6000 2100 m 6600 2100 l 6600 2700 l 6000 2700 l
+ cp gs col0 s gr 
+% Polyline
+n 6600 2100 m 7200 2100 l 7200 2700 l 6600 2700 l
+ cp gs col0 s gr 
+% here ends figure;
+$F2psEnd
+rs
+showpage
diff --git a/lessons/tris/figures/tas.fig b/lessons/tris/figures/tas.fig
new file mode 100644
index 0000000000000000000000000000000000000000..a8a5769d5b21dcb40e01a4066d2d7b6293b242c4
--- /dev/null
+++ b/lessons/tris/figures/tas.fig
@@ -0,0 +1,76 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1800 600 2400 600 2400 1200 1800 1200 1800 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2400 600 3000 600 3000 1200 2400 1200 2400 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3000 600 3600 600 3600 1200 3000 1200 3000 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3600 600 4200 600 4200 1200 3600 1200 3600 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4200 600 4800 600 4800 1200 4200 1200 4200 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4800 600 5400 600 5400 1200 4800 1200 4800 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 5400 600 6000 600 6000 1200 5400 1200 5400 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6000 600 6600 600 6600 1200 6000 1200 6000 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6600 600 7200 600 7200 1200 6600 1200 6600 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1200 600 1800 600 1800 1200 1200 1200 1200 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1200 600 1800 600 1800 1200 1200 1200 1200 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2400 600 3000 600 3000 1200 2400 1200 2400 600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1200 2100 1800 2100 1800 2700 1200 2700 1200 2100
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1800 2100 2400 2100 2400 2700 1800 2700 1800 2100
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2400 2100 3000 2100 3000 2700 2400 2700 2400 2100
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3000 2100 3600 2100 3600 2700 3000 2700 3000 2100
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3600 2100 4200 2100 4200 2700 3600 2700 3600 2100
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4200 2100 4800 2100 4800 2700 4200 2700 4200 2100
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4800 2100 5400 2100 5400 2700 4800 2700 4800 2100
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 5400 2100 6000 2100 6000 2700 5400 2700 5400 2100
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6000 2100 6600 2100 6600 2700 6000 2700 6000 2100
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6600 2100 7200 2100 7200 2700 6600 2700 6600 2100
+4 1 0 50 -1 2 20 0.0000 0 195 135 2100 975 8\001
+4 1 0 50 -1 2 20 0.0000 0 195 270 2700 975 14\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 3300 975 6\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 3900 975 2\001
+4 1 0 50 -1 2 20 0.0000 0 195 270 4500 975 10\001
+4 1 0 50 -1 2 20 0.0000 0 195 270 5100 975 12\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 5700 975 4\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 6300 975 5\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 6900 975 1\001
+4 1 0 50 -1 2 20 0.0000 0 195 270 1500 975 16\001
+4 0 0 50 -1 0 20 0.0000 4 255 4170 1200 375 Exemple de tableau formant un tas :\001
+4 0 0 50 -1 0 20 0.0000 4 255 4965 1200 1875 Exemple de tableau ne formant pas un tas :\001
+4 1 0 50 -1 2 20 0.0000 0 195 270 1500 2475 16\001
+4 1 0 50 -1 2 20 0.0000 0 195 270 2100 2475 14\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 2700 2475 8\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 3300 2475 6\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 3900 2475 2\001
+4 1 0 50 -1 2 20 0.0000 0 195 270 4500 2475 10\001
+4 1 0 50 -1 2 20 0.0000 0 195 270 5100 2475 12\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 5700 2475 4\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 6300 2475 5\001
+4 1 0 50 -1 2 20 0.0000 0 195 135 6900 2475 1\001
+4 0 0 50 -1 0 20 0.0000 4 255 5550 1200 3150 car 10 > 8 et 12 > 8  (10 et 12 \351tant des fils de 8)\001
diff --git a/lessons/tris/figures/tri_bulles.eps b/lessons/tris/figures/tri_bulles.eps
new file mode 100644
index 0000000000000000000000000000000000000000..5f405b776e0f4ac3e32018ac143cb7dd362cce90
--- /dev/null
+++ b/lessons/tris/figures/tri_bulles.eps
@@ -0,0 +1,708 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: tri_bulles.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 4
+%%CreationDate: Fri May  6 20:27:42 2005
+%%For: albuquer@eig3 (ALBUQUERQUE Paul - EIG prof)
+%%BoundingBox: 0 0 694 414
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 414 moveto 0 0 lineto 694 0 lineto 694 414 lineto closepath clip newpath
+-38.3 507.1 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/reencdict 12 dict def /ReEncode { reencdict begin
+/newcodesandnames exch def /newfontname exch def /basefontname exch def
+/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def
+basefontdict { exch dup /FID ne { dup /Encoding eq
+{ exch dup length array copy newfont 3 1 roll put }
+{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
+newfont /FontName newfontname put newcodesandnames aload pop
+128 1 255 { newfont /Encoding get exch /.notdef put } for
+newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
+newfontname newfont definefont pop end } def
+/isovec [
+8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
+8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
+8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
+8#220 /dotlessi 8#230 /oe 8#231 /OE
+8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
+8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
+8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
+8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
+8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
+8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
+8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
+8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
+8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
+8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
+8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
+8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
+8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
+8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
+8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
+8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
+8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
+8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
+8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
+8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
+8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
+8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
+/Times-Roman /Times-Roman-iso isovec ReEncode
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% 
+% here starts figure with depth 90
+% Polyline
+15.000 slw
+n 3075 6600 m 3675 6600 l 3675 7200 l 3075 7200 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 3075 5400 m 3675 5400 l 3675 6000 l 3075 6000 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 2475 5400 m 3075 5400 l 3075 6000 l 2475 6000 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 2475 4200 m 3075 4200 l 3075 4800 l 2475 4800 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 1875 4200 m 2475 4200 l 2475 4800 l 1875 4800 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 7050 5400 m 7650 5400 l 7650 6000 l 7050 6000 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 6450 5400 m 7050 5400 l 7050 6000 l 6450 6000 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 5850 4200 m 6450 4200 l 6450 4800 l 5850 4800 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 5850 3000 m 6450 3000 l 6450 3600 l 5850 3600 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 5250 3000 m 5850 3000 l 5850 3600 l 5250 3600 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 1875 3000 m 2475 3000 l 2475 3600 l 1875 3600 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 4650 1800 m 5250 1800 l 5250 2400 l 4650 2400 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 1275 3000 m 1875 3000 l 1875 3600 l 1275 3600 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 1275 1800 m 1875 1800 l 1875 2400 l 1275 2400 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 675 1800 m 1275 1800 l 1275 2400 l 675 2400 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 3675 6600 m 4275 6600 l 4275 7200 l 3675 7200 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 9150 1800 m 9750 1800 l 9750 2400 l 9150 2400 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 5250 1800 m 5850 1800 l 5850 2400 l 5250 2400 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 6450 4200 m 7050 4200 l 7050 4800 l 6450 4800 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 10350 4200 m 10950 4200 l 10950 4800 l 10350 4800 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 9750 4200 m 10350 4200 l 10350 4800 l 9750 4800 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 9750 3000 m 10350 3000 l 10350 3600 l 9750 3600 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 8550 1800 m 9150 1800 l 9150 2400 l 8550 2400 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 9150 3000 m 9750 3000 l 9750 3600 l 9150 3600 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% here ends figure;
+% 
+% here starts figure with depth 50
+/Times-Roman-iso ff 300.00 scf sf
+900 6975 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1500 6975 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3825 8220 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3240 6975 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3270 8220 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2580 8205 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2085 8205 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1485 8205 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+885 8205 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3885 6975 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2595 6975 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2100 6975 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2025 2175 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2625 2175 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3225 2175 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3825 2175 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3225 3375 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3825 3375 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1425 3375 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+900 3375 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3225 4575 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3825 4575 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+900 4575 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3825 5775 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+900 5775 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1500 5775 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2100 5775 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2685 3375 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2055 3375 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1455 4590 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2010 4590 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2700 4575 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2610 5775 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3195 5775 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+7260 2175 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+5475 5775 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+6075 5775 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+7800 5775 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+7200 5775 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+6675 5775 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+8775 2175 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+9375 2175 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+9975 2175 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+11670 2160 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+8775 3375 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+8775 4575 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+9330 4590 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+9975 4560 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+9375 3375 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+9975 3375 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+11700 3375 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+11700 4575 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+10575 3375 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+10575 4575 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+10575 2175 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+11070 4575 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+11055 3360 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+11040 2160 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4875 5775 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4875 2175 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+5475 2175 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+6075 2175 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+6600 2175 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+7770 2160 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4875 3375 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4875 4575 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+5430 4590 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+6075 4560 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+5475 3375 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+6075 3375 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+6600 3375 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+7275 3375 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+7800 3375 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+6600 4575 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+7275 4575 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+7800 4575 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4890 6975 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+5490 6975 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+6090 6975 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+7815 6975 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+7215 6975 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+6690 6975 m
+gs 1 -1 sc (8) col0 sh gr
+% Polyline
+15.000 slw
+n 10950 3975 m
+ 10950 4950 l gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 3075 4200 m 3675 4200 l 3675 4800 l 3075 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 3675 4200 m 4275 4200 l 4275 4800 l 3675 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 1275 4200 m 1875 4200 l 1875 4800 l 1275 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 675 5400 m 1275 5400 l 1275 6000 l 675 6000 l
+ cp gs col0 s gr 
+% Polyline
+n 1875 5400 m 2475 5400 l 2475 6000 l 1875 6000 l
+ cp gs col0 s gr 
+% Polyline
+n 3675 5400 m 4275 5400 l 4275 6000 l 3675 6000 l
+ cp gs col0 s gr 
+% Polyline
+n 1275 5400 m 1875 5400 l 1875 6000 l 1275 6000 l
+ cp gs col0 s gr 
+% Polyline
+n 675 6600 m 1275 6600 l 1275 7200 l 675 7200 l
+ cp gs col0 s gr 
+% Polyline
+n 1875 6600 m 2475 6600 l 2475 7200 l 1875 7200 l
+ cp gs col0 s gr 
+% Polyline
+n 1275 6600 m 1875 6600 l 1875 7200 l 1275 7200 l
+ cp gs col0 s gr 
+% Polyline
+n 2475 6600 m 3075 6600 l 3075 7200 l 2475 7200 l
+ cp gs col0 s gr 
+% Polyline
+n 660 7830 m 1260 7830 l 1260 8430 l 660 8430 l
+ cp gs col0 s gr 
+% Polyline
+n 1860 7830 m 2460 7830 l 2460 8430 l 1860 8430 l
+ cp gs col0 s gr 
+% Polyline
+n 1260 7830 m 1860 7830 l 1860 8430 l 1260 8430 l
+ cp gs col0 s gr 
+% Polyline
+n 2460 7830 m 3060 7830 l 3060 8430 l 2460 8430 l
+ cp gs col0 s gr 
+% Polyline
+n 3660 7830 m 4260 7830 l 4260 8430 l 3660 8430 l
+ cp gs col0 s gr 
+% Polyline
+n 3060 7830 m 3660 7830 l 3660 8430 l 3060 8430 l
+ cp gs col0 s gr 
+% Polyline
+n 5850 1800 m 6450 1800 l 6450 2400 l 5850 2400 l
+ cp gs col0 s gr 
+% Polyline
+n 6450 1800 m 7050 1800 l 7050 2400 l 6450 2400 l
+ cp gs col0 s gr 
+% Polyline
+n 675 4200 m 1275 4200 l 1275 4800 l 675 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 8580 5400 m 9180 5400 l 9180 6000 l 8580 6000 l
+ cp gs col0 s gr 
+% Polyline
+n 9780 5400 m 10380 5400 l 10380 6000 l 9780 6000 l
+ cp gs col0 s gr 
+% Polyline
+n 9180 5400 m 9780 5400 l 9780 6000 l 9180 6000 l
+ cp gs col0 s gr 
+% Polyline
+n 10380 5400 m 10980 5400 l 10980 6000 l 10380 6000 l
+ cp gs col0 s gr 
+% Polyline
+n 10980 5400 m 11580 5400 l 11580 6000 l 10980 6000 l
+ cp gs col0 s gr 
+% Polyline
+n 11580 5400 m 12180 5400 l 12180 6000 l 11580 6000 l
+ cp gs col0 s gr 
+/Times-Roman-iso ff 300.00 scf sf
+8805 5775 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+9405 5775 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+10005 5775 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+11730 5775 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+11055 5775 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+10605 5775 m
+gs 1 -1 sc (8) col0 sh gr
+% Polyline
+n 1875 1800 m 2475 1800 l 2475 2400 l 1875 2400 l
+ cp gs col0 s gr 
+% Polyline
+n 2475 1800 m 3075 1800 l 3075 2400 l 2475 2400 l
+ cp gs col0 s gr 
+% Polyline
+n 3075 1800 m 3675 1800 l 3675 2400 l 3075 2400 l
+ cp gs col0 s gr 
+% Polyline
+n 3675 1800 m 4275 1800 l 4275 2400 l 3675 2400 l
+ cp gs col0 s gr 
+% Polyline
+n 675 3000 m 1275 3000 l 1275 3600 l 675 3600 l
+ cp gs col0 s gr 
+% Polyline
+n 2475 3000 m 3075 3000 l 3075 3600 l 2475 3600 l
+ cp gs col0 s gr 
+% Polyline
+n 3075 3000 m 3675 3000 l 3675 3600 l 3075 3600 l
+ cp gs col0 s gr 
+% Polyline
+n 3675 3000 m 4275 3000 l 4275 3600 l 3675 3600 l
+ cp gs col0 s gr 
+% Polyline
+n 4650 3000 m 5250 3000 l 5250 3600 l 4650 3600 l
+ cp gs col0 s gr 
+% Polyline
+n 7650 5400 m 8250 5400 l 8250 6000 l 7650 6000 l
+ cp gs col0 s gr 
+% Polyline
+n 5250 5400 m 5850 5400 l 5850 6000 l 5250 6000 l
+ cp gs col0 s gr 
+% Polyline
+n 7650 5175 m
+ 7650 6150 l gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 9750 1800 m 10350 1800 l 10350 2400 l 9750 2400 l
+ cp gs col0 s gr 
+% Polyline
+n 10350 1800 m 10950 1800 l 10950 2400 l 10350 2400 l
+ cp gs col0 s gr 
+% Polyline
+n 8550 3000 m 9150 3000 l 9150 3600 l 8550 3600 l
+ cp gs col0 s gr 
+% Polyline
+n 10350 3000 m 10950 3000 l 10950 3600 l 10350 3600 l
+ cp gs col0 s gr 
+% Polyline
+n 10950 3000 m 11550 3000 l 11550 3600 l 10950 3600 l
+ cp gs col0 s gr 
+% Polyline
+n 11550 3000 m 12150 3000 l 12150 3600 l 11550 3600 l
+ cp gs col0 s gr 
+% Polyline
+n 8550 4200 m 9150 4200 l 9150 4800 l 8550 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 10950 4200 m 11550 4200 l 11550 4800 l 10950 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 11550 4200 m 12150 4200 l 12150 4800 l 11550 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 9150 4200 m 9750 4200 l 9750 4800 l 9150 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 10950 1800 m 11550 1800 l 11550 2400 l 10950 2400 l
+ cp gs col0 s gr 
+% Polyline
+n 11550 1800 m 12150 1800 l 12150 2400 l 11550 2400 l
+ cp gs col0 s gr 
+% Polyline
+n 10950 2850 m
+ 10950 3825 l gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 10950 1650 m
+ 10950 2625 l gs col11 1.00 shd ef gr gs col0 s gr 
+/Times-Roman-iso ff 300.00 scf sf
+8775 6360 m
+gs 1 -1 sc (aucun \351change = suite tri\351e) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+825 2175 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1425 2175 m
+gs 1 -1 sc (3) col0 sh gr
+% Polyline
+n 5850 5400 m 6450 5400 l 6450 6000 l 5850 6000 l
+ cp gs col0 s gr 
+% Polyline
+n 6450 3000 m 7050 3000 l 7050 3600 l 6450 3600 l
+ cp gs col0 s gr 
+% Polyline
+n 7050 3000 m 7650 3000 l 7650 3600 l 7050 3600 l
+ cp gs col0 s gr 
+% Polyline
+n 7650 3000 m 8250 3000 l 8250 3600 l 7650 3600 l
+ cp gs col0 s gr 
+% Polyline
+n 4650 4200 m 5250 4200 l 5250 4800 l 4650 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 7050 4200 m 7650 4200 l 7650 4800 l 7050 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 7650 4200 m 8250 4200 l 8250 4800 l 7650 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 5250 4200 m 5850 4200 l 5850 4800 l 5250 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 7050 1800 m 7650 1800 l 7650 2400 l 7050 2400 l
+ cp gs col0 s gr 
+% Polyline
+n 7650 1800 m 8250 1800 l 8250 2400 l 7650 2400 l
+ cp gs col0 s gr 
+% Polyline
+n 7650 1575 m
+ 7650 2550 l gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 7650 2775 m
+ 7650 3750 l gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 7650 3975 m
+ 7650 4950 l gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 4665 6600 m 5265 6600 l 5265 7200 l 4665 7200 l
+ cp gs col0 s gr 
+% Polyline
+n 5865 6600 m 6465 6600 l 6465 7200 l 5865 7200 l
+ cp gs col0 s gr 
+% Polyline
+n 7665 6600 m 8265 6600 l 8265 7200 l 7665 7200 l
+ cp gs col0 s gr 
+% Polyline
+n 5265 6600 m 5865 6600 l 5865 7200 l 5265 7200 l
+ cp gs col0 s gr 
+% Polyline
+n 7065 6600 m 7665 6600 l 7665 7200 l 7065 7200 l
+ cp gs col0 s gr 
+% Polyline
+n 6465 6600 m 7065 6600 l 7065 7200 l 6465 7200 l
+ cp gs col0 s gr 
+% Polyline
+n 7665 6375 m
+ 7665 7350 l gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 4650 5400 m 5250 5400 l 5250 6000 l 4650 6000 l
+ cp gs col0 s gr 
+% here ends figure;
+$F2psEnd
+rs
+showpage
diff --git a/lessons/tris/figures/tri_bulles.fig b/lessons/tris/figures/tri_bulles.fig
new file mode 100644
index 0000000000000000000000000000000000000000..d8bbc050b510d674806bb5a8948433a869c7af20
--- /dev/null
+++ b/lessons/tris/figures/tri_bulles.fig
@@ -0,0 +1,300 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 645 1560 12195 8445
+6 8565 5385 12195 6015
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 8580 5400 9180 5400 9180 6000 8580 6000 8580 5400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 9780 5400 10380 5400 10380 6000 9780 6000 9780 5400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 9180 5400 9780 5400 9780 6000 9180 6000 9180 5400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 10380 5400 10980 5400 10980 6000 10380 6000 10380 5400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 10980 5400 11580 5400 11580 6000 10980 6000 10980 5400
+2 2 0 2 0 11 50 -1 -1 0.000 0 0 -1 0 0 5
+	 11580 5400 12180 5400 12180 6000 11580 6000 11580 5400
+4 0 0 50 -1 0 20 0.0000 4 210 150 8805 5775 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 9405 5775 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 10005 5775 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 11730 5775 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 11055 5775 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 10605 5775 8\001
+-6
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1875 1800 2475 1800 2475 2400 1875 2400 1875 1800
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2475 1800 3075 1800 3075 2400 2475 2400 2475 1800
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3075 1800 3675 1800 3675 2400 3075 2400 3075 1800
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3675 1800 4275 1800 4275 2400 3675 2400 3675 1800
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 675 3000 1275 3000 1275 3600 675 3600 675 3000
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2475 3000 3075 3000 3075 3600 2475 3600 2475 3000
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3075 3000 3675 3000 3675 3600 3075 3600 3075 3000
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3675 3000 4275 3000 4275 3600 3675 3600 3675 3000
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 675 4200 1275 4200 1275 4800 675 4800 675 4200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3075 4200 3675 4200 3675 4800 3075 4800 3075 4200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3675 4200 4275 4200 4275 4800 3675 4800 3675 4200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1275 4200 1875 4200 1875 4800 1275 4800 1275 4200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 675 5400 1275 5400 1275 6000 675 6000 675 5400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1875 5400 2475 5400 2475 6000 1875 6000 1875 5400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3675 5400 4275 5400 4275 6000 3675 6000 3675 5400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1275 5400 1875 5400 1875 6000 1275 6000 1275 5400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 675 6600 1275 6600 1275 7200 675 7200 675 6600
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1875 6600 2475 6600 2475 7200 1875 7200 1875 6600
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1275 6600 1875 6600 1875 7200 1275 7200 1275 6600
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2475 6600 3075 6600 3075 7200 2475 7200 2475 6600
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 660 7830 1260 7830 1260 8430 660 8430 660 7830
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1860 7830 2460 7830 2460 8430 1860 8430 1860 7830
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1260 7830 1860 7830 1860 8430 1260 8430 1260 7830
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2460 7830 3060 7830 3060 8430 2460 8430 2460 7830
+2 2 0 2 0 11 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3660 7830 4260 7830 4260 8430 3660 8430 3660 7830
+2 2 0 2 0 11 50 -1 -1 0.000 0 0 7 0 0 5
+	 3060 7830 3660 7830 3660 8430 3060 8430 3060 7830
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 675 1800 1275 1800 1275 2400 675 2400 675 1800
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 1275 1800 1875 1800 1875 2400 1275 2400 1275 1800
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 1275 3000 1875 3000 1875 3600 1275 3600 1275 3000
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 1875 3000 2475 3000 2475 3600 1875 3600 1875 3000
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 1875 4200 2475 4200 2475 4800 1875 4800 1875 4200
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 2475 4200 3075 4200 3075 4800 2475 4800 2475 4200
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 2475 5400 3075 5400 3075 6000 2475 6000 2475 5400
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 3075 5400 3675 5400 3675 6000 3075 6000 3075 5400
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 3075 6600 3675 6600 3675 7200 3075 7200 3075 6600
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 3675 6600 4275 6600 4275 7200 3675 7200 3675 6600
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 5850 1800 6450 1800 6450 2400 5850 2400 5850 1800
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6450 1800 7050 1800 7050 2400 6450 2400 6450 1800
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4650 3000 5250 3000 5250 3600 4650 3600 4650 3000
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6450 3000 7050 3000 7050 3600 6450 3600 6450 3000
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 7050 3000 7650 3000 7650 3600 7050 3600 7050 3000
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 7650 3000 8250 3000 8250 3600 7650 3600 7650 3000
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4650 4200 5250 4200 5250 4800 4650 4800 4650 4200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 7050 4200 7650 4200 7650 4800 7050 4800 7050 4200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 7650 4200 8250 4200 8250 4800 7650 4800 7650 4200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 5250 4200 5850 4200 5850 4800 5250 4800 5250 4200
+2 2 0 2 0 11 50 -1 -1 0.000 0 0 7 0 0 5
+	 7050 1800 7650 1800 7650 2400 7050 2400 7050 1800
+2 2 0 2 0 11 50 -1 -1 0.000 0 0 7 0 0 5
+	 7650 1800 8250 1800 8250 2400 7650 2400 7650 1800
+2 1 0 2 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 7650 1575 7650 2550
+2 1 0 2 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 7650 2775 7650 3750
+2 1 0 2 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 7650 3975 7650 4950
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4665 6600 5265 6600 5265 7200 4665 7200 4665 6600
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 5865 6600 6465 6600 6465 7200 5865 7200 5865 6600
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 7665 6600 8265 6600 8265 7200 7665 7200 7665 6600
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 5265 6600 5865 6600 5865 7200 5265 7200 5265 6600
+2 2 0 2 0 11 50 -1 -1 0.000 0 0 -1 0 0 5
+	 7065 6600 7665 6600 7665 7200 7065 7200 7065 6600
+2 2 0 2 0 11 50 -1 -1 0.000 0 0 7 0 0 5
+	 6465 6600 7065 6600 7065 7200 6465 7200 6465 6600
+2 1 0 2 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 7665 6375 7665 7350
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4650 5400 5250 5400 5250 6000 4650 6000 4650 5400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 5850 5400 6450 5400 6450 6000 5850 6000 5850 5400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 7650 5400 8250 5400 8250 6000 7650 6000 7650 5400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 5250 5400 5850 5400 5850 6000 5250 6000 5250 5400
+2 1 0 2 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 7650 5175 7650 6150
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 4650 1800 5250 1800 5250 2400 4650 2400 4650 1800
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 5250 1800 5850 1800 5850 2400 5250 2400 5250 1800
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 5250 3000 5850 3000 5850 3600 5250 3600 5250 3000
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 5850 3000 6450 3000 6450 3600 5850 3600 5850 3000
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 5850 4200 6450 4200 6450 4800 5850 4800 5850 4200
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 6450 5400 7050 5400 7050 6000 6450 6000 6450 5400
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 7050 5400 7650 5400 7650 6000 7050 6000 7050 5400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 9750 1800 10350 1800 10350 2400 9750 2400 9750 1800
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 10350 1800 10950 1800 10950 2400 10350 2400 10350 1800
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 8550 3000 9150 3000 9150 3600 8550 3600 8550 3000
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 10350 3000 10950 3000 10950 3600 10350 3600 10350 3000
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 10950 3000 11550 3000 11550 3600 10950 3600 10950 3000
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 11550 3000 12150 3000 12150 3600 11550 3600 11550 3000
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 8550 4200 9150 4200 9150 4800 8550 4800 8550 4200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 10950 4200 11550 4200 11550 4800 10950 4800 10950 4200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 11550 4200 12150 4200 12150 4800 11550 4800 11550 4200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 9150 4200 9750 4200 9750 4800 9150 4800 9150 4200
+2 2 0 2 0 11 50 -1 -1 0.000 0 0 7 0 0 5
+	 10950 1800 11550 1800 11550 2400 10950 2400 10950 1800
+2 2 0 2 0 11 50 -1 -1 0.000 0 0 7 0 0 5
+	 11550 1800 12150 1800 12150 2400 11550 2400 11550 1800
+2 1 0 2 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 10950 3975 10950 4950
+2 1 0 2 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 10950 2850 10950 3825
+2 1 0 2 0 11 50 -1 20 0.000 0 0 -1 0 0 2
+	 10950 1650 10950 2625
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 8550 1800 9150 1800 9150 2400 8550 2400 8550 1800
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 9150 1800 9750 1800 9750 2400 9150 2400 9150 1800
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 9150 3000 9750 3000 9750 3600 9150 3600 9150 3000
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 9750 3000 10350 3000 10350 3600 9750 3600 9750 3000
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 9750 4200 10350 4200 10350 4800 9750 4800 9750 4200
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 10350 4200 10950 4200 10950 4800 10350 4800 10350 4200
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 6450 4200 7050 4200 7050 4800 6450 4800 6450 4200
+4 0 0 50 -1 0 20 0.0000 4 270 3315 8775 6360 aucun \351change = suite tri\351e\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 825 2175 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 1425 2175 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2025 2175 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2625 2175 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 3225 2175 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 3825 2175 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 3225 3375 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 3825 3375 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 1425 3375 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 900 3375 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 3225 4575 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 3825 4575 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 900 4575 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 3825 5775 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 900 5775 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 1500 5775 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2100 5775 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2685 3375 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2055 3375 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 1455 4590 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 2010 4590 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2700 4575 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 2610 5775 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 3195 5775 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 900 6975 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 1500 6975 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2100 6975 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 3240 6975 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 2595 6975 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 3885 6975 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 885 8205 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 1485 8205 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2085 8205 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 2580 8205 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 3270 8220 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 3825 8220 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 4875 2175 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 5475 2175 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 6075 2175 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 6600 2175 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 7260 2175 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 7770 2160 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 4875 3375 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 4875 4575 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 5430 4590 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 6075 4560 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 5475 3375 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 6075 3375 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 6600 3375 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 7275 3375 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 7800 3375 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 6600 4575 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 7275 4575 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 7800 4575 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 4890 6975 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 5490 6975 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 6090 6975 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 7815 6975 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 7215 6975 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 6690 6975 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 4875 5775 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 5475 5775 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 6075 5775 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 7800 5775 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 7200 5775 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 6675 5775 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 8775 2175 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 9375 2175 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 9975 2175 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 11670 2160 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 8775 3375 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 8775 4575 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 9330 4590 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 9975 4560 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 9375 3375 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 9975 3375 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 11700 3375 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 11700 4575 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 10575 3375 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 10575 4575 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 10575 2175 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 11070 4575 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 11055 3360 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 11040 2160 10\001
+-6
diff --git a/lessons/tris/figures/tri_insert.eps b/lessons/tris/figures/tri_insert.eps
new file mode 100644
index 0000000000000000000000000000000000000000..e65f675e7d087fa68528851c41a7bd9029bb69d5
--- /dev/null
+++ b/lessons/tris/figures/tri_insert.eps
@@ -0,0 +1,405 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: /home/albuquer/Courses/Algo/TI1/Themes/tri_insert.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 4
+%%CreationDate: Fri May  6 20:30:13 2005
+%%For: albuquer@eig3 (ALBUQUERQUE Paul - EIG prof)
+%%BoundingBox: 0 0 219 412
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 412 moveto 0 0 lineto 219 0 lineto 219 412 lineto closepath clip newpath
+-70.7 505.3 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/reencdict 12 dict def /ReEncode { reencdict begin
+/newcodesandnames exch def /newfontname exch def /basefontname exch def
+/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def
+basefontdict { exch dup /FID ne { dup /Encoding eq
+{ exch dup length array copy newfont 3 1 roll put }
+{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
+newfont /FontName newfontname put newcodesandnames aload pop
+128 1 255 { newfont /Encoding get exch /.notdef put } for
+newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
+newfontname newfont definefont pop end } def
+/isovec [
+8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
+8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
+8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
+8#220 /dotlessi 8#230 /oe 8#231 /OE
+8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
+8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
+8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
+8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
+8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
+8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
+8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
+8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
+8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
+8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
+8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
+8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
+8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
+8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
+8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
+8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
+8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
+8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
+8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
+8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
+8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
+8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
+/Times-Roman /Times-Roman-iso isovec ReEncode
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% 
+% here starts figure with depth 90
+% Polyline
+15.000 slw
+n 4200 6600 m 4800 6600 l 4800 7200 l 4200 7200 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 3000 4200 m 3600 4200 l 3600 4800 l 3000 4800 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 2400 3000 m 3000 3000 l 3000 3600 l 2400 3600 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 1800 1800 m 2400 1800 l 2400 2400 l 1800 2400 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 3600 5400 m 4200 5400 l 4200 6000 l 3600 6000 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% here ends figure;
+% 
+% here starts figure with depth 50
+/Times-Roman-iso ff 300.00 scf sf
+1350 2175 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3150 4575 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1950 4575 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2475 4575 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1425 4575 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4350 4575 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3750 4575 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3225 3375 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2625 3375 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1425 3375 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1950 3375 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4350 3375 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4350 8175 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3675 8175 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3225 8175 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3750 3375 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3750 2175 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1950 2175 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2025 8175 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1425 8175 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3150 6975 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3750 6975 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4350 6975 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2625 6975 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2025 6975 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1425 6975 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3150 5775 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2625 5775 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2025 5775 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1425 5775 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4350 5775 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3750 5775 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4350 2175 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2625 8175 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3150 2175 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2550 2175 m
+gs 1 -1 sc (5) col0 sh gr
+% Polyline
+15.000 slw
+gs  clippath
+1485 1590 m 1485 1710 l 1772 1710 l 1532 1650 l 1772 1590 l cp
+eoclip
+n 2100 1650 m
+ 1500 1650 l gs col0 s gr gr
+
+% arrowhead
+n 1772 1590 m 1532 1650 l 1772 1710 l 1772 1590 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+n 4200 1800 m 4800 1800 l 4800 2400 l 4200 2400 l
+ cp gs col0 s gr 
+% Polyline
+n 3600 1800 m 4200 1800 l 4200 2400 l 3600 2400 l
+ cp gs col0 s gr 
+% Polyline
+n 3000 1800 m 3600 1800 l 3600 2400 l 3000 2400 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 1800 m 3000 1800 l 3000 2400 l 2400 2400 l
+ cp gs col0 s gr 
+% Polyline
+n 1200 1800 m 1800 1800 l 1800 2400 l 1200 2400 l
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+2010 3990 m 2010 4110 l 2297 4110 l 2057 4050 l 2297 3990 l cp
+eoclip
+n 3300 4050 m
+ 2025 4050 l gs col0 s gr gr
+
+% arrowhead
+n 2297 3990 m 2057 4050 l 2297 4110 l 2297 3990 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+n 1800 4200 m 2400 4200 l 2400 4800 l 1800 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 4200 4200 m 4800 4200 l 4800 4800 l 4200 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 3600 4200 m 4200 4200 l 4200 4800 l 3600 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 4200 m 3000 4200 l 3000 4800 l 2400 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 1200 4200 m 1800 4200 l 1800 4800 l 1200 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 1800 3000 m 2400 3000 l 2400 3600 l 1800 3600 l
+ cp gs col0 s gr 
+% Polyline
+n 4200 3000 m 4800 3000 l 4800 3600 l 4200 3600 l
+ cp gs col0 s gr 
+% Polyline
+n 3600 3000 m 4200 3000 l 4200 3600 l 3600 3600 l
+ cp gs col0 s gr 
+% Polyline
+n 3000 3000 m 3600 3000 l 3600 3600 l 3000 3600 l
+ cp gs col0 s gr 
+% Polyline
+n 1200 3000 m 1800 3000 l 1800 3600 l 1200 3600 l
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+2085 2790 m 2085 2910 l 2372 2910 l 2132 2850 l 2372 2790 l cp
+eoclip
+n 2700 2850 m
+ 2100 2850 l gs col0 s gr gr
+
+% arrowhead
+n 2372 2790 m 2132 2850 l 2372 2910 l 2372 2790 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+3285 5190 m 3285 5310 l 3572 5310 l 3332 5250 l 3572 5190 l cp
+eoclip
+n 3900 5250 m
+ 3300 5250 l gs col0 s gr gr
+
+% arrowhead
+n 3572 5190 m 3332 5250 l 3572 5310 l 3572 5190 l  cp gs 0.00 setgray ef gr  col0 s
+/Times-Roman-iso ff 300.00 scf sf
+1800 7650 m
+gs 1 -1 sc (suite tri\351e) col0 sh gr
+% Polyline
+n 4200 7800 m 4800 7800 l 4800 8400 l 4200 8400 l
+ cp gs col0 s gr 
+% Polyline
+n 3600 7800 m 4200 7800 l 4200 8400 l 3600 8400 l
+ cp gs col0 s gr 
+% Polyline
+n 3000 7800 m 3600 7800 l 3600 8400 l 3000 8400 l
+ cp gs col0 s gr 
+% Polyline
+n 1800 7800 m 2400 7800 l 2400 8400 l 1800 8400 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 7800 m 3000 7800 l 3000 8400 l 2400 8400 l
+ cp gs col0 s gr 
+% Polyline
+n 1200 7800 m 1800 7800 l 1800 8400 l 1200 8400 l
+ cp gs col0 s gr 
+% Polyline
+n 3600 6600 m 4200 6600 l 4200 7200 l 3600 7200 l
+ cp gs col0 s gr 
+% Polyline
+n 3000 6600 m 3600 6600 l 3600 7200 l 3000 7200 l
+ cp gs col0 s gr 
+% Polyline
+n 1800 6600 m 2400 6600 l 2400 7200 l 1800 7200 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 6600 m 3000 6600 l 3000 7200 l 2400 7200 l
+ cp gs col0 s gr 
+% Polyline
+n 1200 6600 m 1800 6600 l 1800 7200 l 1200 7200 l
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+3210 6390 m 3210 6510 l 3497 6510 l 3257 6450 l 3497 6390 l cp
+eoclip
+n 4500 6450 m
+ 3225 6450 l gs col0 s gr gr
+
+% arrowhead
+n 3497 6390 m 3257 6450 l 3497 6510 l 3497 6390 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+n 3000 5400 m 3600 5400 l 3600 6000 l 3000 6000 l
+ cp gs col0 s gr 
+% Polyline
+n 1800 5400 m 2400 5400 l 2400 6000 l 1800 6000 l
+ cp gs col0 s gr 
+% Polyline
+n 4200 5400 m 4800 5400 l 4800 6000 l 4200 6000 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 5400 m 3000 5400 l 3000 6000 l 2400 6000 l
+ cp gs col0 s gr 
+% Polyline
+n 1200 5400 m 1800 5400 l 1800 6000 l 1200 6000 l
+ cp gs col0 s gr 
+% here ends figure;
+$F2psEnd
+rs
+showpage
diff --git a/lessons/tris/figures/tri_insert.fig b/lessons/tris/figures/tri_insert.fig
new file mode 100644
index 0000000000000000000000000000000000000000..cc2b95f459578476f2ff9912d6380b0fbfda8d8b
--- /dev/null
+++ b/lessons/tris/figures/tri_insert.fig
@@ -0,0 +1,135 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 1185 1590 4815 8415
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 2.00 120.00 240.00
+	 2100 1650 1500 1650
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 2.00 120.00 240.00
+	 2700 2850 2100 2850
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1200 3000 1800 3000 1800 3600 1200 3600 1200 3000
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3000 3000 3600 3000 3600 3600 3000 3600 3000 3000
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3600 3000 4200 3000 4200 3600 3600 3600 3600 3000
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4200 3000 4800 3000 4800 3600 4200 3600 4200 3000
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1800 3000 2400 3000 2400 3600 1800 3600 1800 3000
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1200 4200 1800 4200 1800 4800 1200 4800 1200 4200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2400 4200 3000 4200 3000 4800 2400 4800 2400 4200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3600 4200 4200 4200 4200 4800 3600 4800 3600 4200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4200 4200 4800 4200 4800 4800 4200 4800 4200 4200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1800 4200 2400 4200 2400 4800 1800 4800 1800 4200
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 2.00 120.00 240.00
+	 3300 4050 2025 4050
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1200 1800 1800 1800 1800 2400 1200 2400 1200 1800
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2400 1800 3000 1800 3000 2400 2400 2400 2400 1800
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3000 1800 3600 1800 3600 2400 3000 2400 3000 1800
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3600 1800 4200 1800 4200 2400 3600 2400 3600 1800
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4200 1800 4800 1800 4800 2400 4200 2400 4200 1800
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 2.00 120.00 240.00
+	 3900 5250 3300 5250
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1200 5400 1800 5400 1800 6000 1200 6000 1200 5400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2400 5400 3000 5400 3000 6000 2400 6000 2400 5400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4200 5400 4800 5400 4800 6000 4200 6000 4200 5400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1800 5400 2400 5400 2400 6000 1800 6000 1800 5400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3000 5400 3600 5400 3600 6000 3000 6000 3000 5400
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 2.00 120.00 240.00
+	 4500 6450 3225 6450
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1200 6600 1800 6600 1800 7200 1200 7200 1200 6600
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2400 6600 3000 6600 3000 7200 2400 7200 2400 6600
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1800 6600 2400 6600 2400 7200 1800 7200 1800 6600
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3000 6600 3600 6600 3600 7200 3000 7200 3000 6600
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3600 6600 4200 6600 4200 7200 3600 7200 3600 6600
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1200 7800 1800 7800 1800 8400 1200 8400 1200 7800
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2400 7800 3000 7800 3000 8400 2400 8400 2400 7800
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1800 7800 2400 7800 2400 8400 1800 8400 1800 7800
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3000 7800 3600 7800 3600 8400 3000 8400 3000 7800
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3600 7800 4200 7800 4200 8400 3600 8400 3600 7800
+2 2 0 2 0 11 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4200 7800 4800 7800 4800 8400 4200 8400 4200 7800
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 1800 1800 2400 1800 2400 2400 1800 2400 1800 1800
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 2400 3000 3000 3000 3000 3600 2400 3600 2400 3000
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 3000 4200 3600 4200 3600 4800 3000 4800 3000 4200
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 3600 5400 4200 5400 4200 6000 3600 6000 3600 5400
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 4200 6600 4800 6600 4800 7200 4200 7200 4200 6600
+4 0 0 50 -1 0 20 0.0000 4 210 1215 1800 7650 suite tri\351e\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 3750 3375 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 4350 3375 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 1950 3375 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 1425 3375 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2625 3375 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 3225 3375 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 3750 4575 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 4350 4575 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 1425 4575 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 2475 4575 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 1950 4575 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 3150 4575 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 1350 2175 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 1950 2175 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2550 2175 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 3150 2175 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 3750 2175 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 4350 2175 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 3750 5775 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 4350 5775 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 1425 5775 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2025 5775 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2625 5775 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 3150 5775 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 1425 6975 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2025 6975 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2625 6975 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 4350 6975 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 3750 6975 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 3150 6975 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 1425 8175 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2025 8175 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2625 8175 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 4350 8175 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 3675 8175 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 3225 8175 8\001
+-6
diff --git a/lessons/tris/figures/tri_select.eps b/lessons/tris/figures/tri_select.eps
new file mode 100644
index 0000000000000000000000000000000000000000..19ac8532bef6077180c73f18dcd18786b64b08de
--- /dev/null
+++ b/lessons/tris/figures/tri_select.eps
@@ -0,0 +1,435 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: /home/albuquer/Courses/Algo/TI1/Themes/tri_select.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 4
+%%CreationDate: Fri May  6 20:29:13 2005
+%%For: albuquer@eig3 (ALBUQUERQUE Paul - EIG prof)
+%%BoundingBox: 0 0 219 416
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 416 moveto 0 0 lineto 219 0 lineto 219 416 lineto closepath clip newpath
+-70.7 505.3 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/reencdict 12 dict def /ReEncode { reencdict begin
+/newcodesandnames exch def /newfontname exch def /basefontname exch def
+/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def
+basefontdict { exch dup /FID ne { dup /Encoding eq
+{ exch dup length array copy newfont 3 1 roll put }
+{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
+newfont /FontName newfontname put newcodesandnames aload pop
+128 1 255 { newfont /Encoding get exch /.notdef put } for
+newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
+newfontname newfont definefont pop end } def
+/isovec [
+8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
+8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
+8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
+8#220 /dotlessi 8#230 /oe 8#231 /OE
+8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
+8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
+8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
+8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
+8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
+8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
+8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
+8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
+8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
+8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
+8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
+8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
+8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
+8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
+8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
+8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
+8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
+8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
+8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
+8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
+8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
+8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
+/Times-Roman /Times-Roman-iso isovec ReEncode
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% 
+% here starts figure with depth 90
+% Polyline
+15.000 slw
+n 3000 5400 m 3600 5400 l 3600 6000 l 3000 6000 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 3600 5400 m 4200 5400 l 4200 6000 l 3600 6000 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 4200 5400 m 4800 5400 l 4800 6000 l 4200 6000 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 4200 4200 m 4800 4200 l 4800 4800 l 4200 4800 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 1200 1800 m 1800 1800 l 1800 2400 l 1200 2400 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 2400 1800 m 3000 1800 l 3000 2400 l 2400 2400 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 3000 1800 m 3600 1800 l 3600 2400 l 3000 2400 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 4200 1800 m 4800 1800 l 4800 2400 l 4200 2400 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 1800 3000 m 2400 3000 l 2400 3600 l 1800 3600 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 3600 4200 m 4200 4200 l 4200 4800 l 3600 4800 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 3000 3000 m 3600 3000 l 3600 3600 l 3000 3600 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 4200 3000 m 4800 3000 l 4800 3600 l 4200 3600 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 3600 3000 m 4200 3000 l 4200 3600 l 3600 3600 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 2400 4200 m 3000 4200 l 3000 4800 l 2400 4800 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 3000 4200 m 3600 4200 l 3600 4800 l 3000 4800 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 3600 6600 m 4200 6600 l 4200 7200 l 3600 7200 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 4200 6600 m 4800 6600 l 4800 7200 l 4200 7200 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 1800 1800 m 2400 1800 l 2400 2400 l 1800 2400 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 3600 1800 m 4200 1800 l 4200 2400 l 3600 2400 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 2400 3000 m 3000 3000 l 3000 3600 l 2400 3600 l
+ cp gs col11 1.00 shd ef gr gs col0 s gr 
+% here ends figure;
+% 
+% here starts figure with depth 50
+/Times-Roman-iso ff 300.00 scf sf
+1425 5775 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2025 5775 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2625 5775 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3150 5775 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1425 6975 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2625 6975 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2025 6975 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3750 6975 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1425 8175 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2025 8175 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2625 8175 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2430 4125 m
+gs 1 -1 sc (Min) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2640 4560 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3120 4560 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2610 2175 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3210 2175 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2295 7665 m
+gs 1 -1 sc (suite tri\351e) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4230 6510 m
+gs 1 -1 sc (Min) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4230 5310 m
+gs 1 -1 sc (Min) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3030 2895 m
+gs 1 -1 sc (Min) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1830 1710 m
+gs 1 -1 sc (Min) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4350 6975 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3225 6975 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2025 4575 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3750 2175 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4350 2175 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1950 2175 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1350 2175 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3225 8175 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3675 8175 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4350 8175 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4350 3375 m
+gs 1 -1 sc (8) col0 sh gr
+% Polyline
+15.000 slw
+n 3000 6600 m 3600 6600 l 3600 7200 l 3000 7200 l
+ cp gs col0 s gr 
+% Polyline
+n 1800 6600 m 2400 6600 l 2400 7200 l 1800 7200 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 6600 m 3000 6600 l 3000 7200 l 2400 7200 l
+ cp gs col0 s gr 
+% Polyline
+n 1200 6600 m 1800 6600 l 1800 7200 l 1200 7200 l
+ cp gs col0 s gr 
+% Polyline
+n 1800 5400 m 2400 5400 l 2400 6000 l 1800 6000 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 5400 m 3000 5400 l 3000 6000 l 2400 6000 l
+ cp gs col0 s gr 
+% Polyline
+n 1200 5400 m 1800 5400 l 1800 6000 l 1200 6000 l
+ cp gs col0 s gr 
+% Polyline
+n 1800 4200 m 2400 4200 l 2400 4800 l 1800 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 1200 4200 m 1800 4200 l 1800 4800 l 1200 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 1200 3000 m 1800 3000 l 1800 3600 l 1200 3600 l
+ cp gs col0 s gr 
+% Arc
+gs  clippath
+3908 7167 m 3868 7212 l 4058 7377 l 3937 7232 l 4098 7332 l cp
+4561 7212 m 4521 7167 l 4331 7332 l 4493 7232 l 4371 7377 l cp
+eoclip
+n 4215.0 6981.8 383.2 34.7 145.3 arc
+gs col0 s gr
+ gr
+
+% arrowhead
+n 4098 7332 m 3937 7232 l 4058 7377 l 4050 7330 l 4098 7332 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% arrowhead
+n 4371 7377 m 4493 7232 l 4331 7332 l 4379 7330 l 4371 7377 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Arc
+gs  clippath
+3287 5966 m 3256 6017 l 3471 6149 l 3327 6026 l 3502 6098 l cp
+4483 6017 m 4452 5966 l 4237 6098 l 4413 6026 l 4268 6149 l cp
+eoclip
+n 3870.0 5220.6 974.5 53.1 126.9 arc
+gs col0 s gr
+ gr
+
+% arrowhead
+n 3502 6098 m 3327 6026 l 3471 6149 l 3454 6104 l 3502 6098 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% arrowhead
+n 4268 6149 m 4413 6026 l 4237 6098 l 4285 6104 l 4268 6149 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Arc
+gs  clippath
+2085 3551 m 2057 3604 l 2281 3721 l 2129 3608 l 2309 3668 l cp
+3311 3636 m 3286 3581 l 3057 3686 l 3240 3636 l 3082 3741 l cp
+eoclip
+n 2710.2 2590.9 1174.4 60.7 122.2 arc
+gs col0 s gr
+ gr
+
+% arrowhead
+n 2309 3668 m 2129 3608 l 2281 3721 l 2261 3677 l 2309 3668 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% arrowhead
+n 3082 3741 m 3240 3636 l 3057 3686 l 3103 3698 l 3082 3741 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Arc
+gs  clippath
+1496 2368 m 1452 2410 l 1627 2591 l 1519 2436 l 1670 2550 l cp
+2117 2410 m 2073 2368 l 1899 2550 l 2051 2436 l 1942 2591 l cp
+eoclip
+n 1785.0 2240.6 339.7 28.0 152.0 arc
+gs col0 s gr
+ gr
+
+% arrowhead
+n 1670 2550 m 1519 2436 l 1627 2591 l 1623 2544 l 1670 2550 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% arrowhead
+n 1942 2591 m 2051 2436 l 1899 2550 l 1946 2544 l 1942 2591 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+n 1200 7800 m 1800 7800 l 1800 8400 l 1200 8400 l
+ cp gs col0 s gr 
+/Times-Roman-iso ff 300.00 scf sf
+4350 5775 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3750 5775 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1425 4575 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+4350 4575 m
+gs 1 -1 sc (8) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3750 4575 m
+gs 1 -1 sc (10) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3225 3375 m
+gs 1 -1 sc (5) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+2625 3375 m
+gs 1 -1 sc (7) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1425 3375 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1950 3375 m
+gs 1 -1 sc (41) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+3750 3375 m
+gs 1 -1 sc (10) col0 sh gr
+% Polyline
+n 4200 7800 m 4800 7800 l 4800 8400 l 4200 8400 l
+ cp gs col0 s gr 
+% Polyline
+n 3600 7800 m 4200 7800 l 4200 8400 l 3600 8400 l
+ cp gs col0 s gr 
+% Polyline
+n 3000 7800 m 3600 7800 l 3600 8400 l 3000 8400 l
+ cp gs col0 s gr 
+% Polyline
+n 1800 7800 m 2400 7800 l 2400 8400 l 1800 8400 l
+ cp gs col0 s gr 
+% Polyline
+n 2400 7800 m 3000 7800 l 3000 8400 l 2400 8400 l
+ cp gs col0 s gr 
+% here ends figure;
+$F2psEnd
+rs
+showpage
diff --git a/lessons/tris/figures/tri_select.fig b/lessons/tris/figures/tri_select.fig
new file mode 100644
index 0000000000000000000000000000000000000000..bcc2b206b9f676bac8d33f67c4f8485aa4f35f6d
--- /dev/null
+++ b/lessons/tris/figures/tri_select.fig
@@ -0,0 +1,137 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 1185 1515 4815 8415
+5 1 0 2 0 11 50 -1 -1 0.000 0 0 1 1 1785.000 2240.625 2085 2400 1800 2580 1485 2400
+	2 1 2.00 60.00 150.00
+	2 1 2.00 60.00 150.00
+5 1 0 2 0 11 50 -1 -1 0.000 0 0 1 1 2710.227 2590.909 3285 3615 2685 3765 2085 3585
+	2 1 2.00 60.00 150.00
+	2 1 2.00 60.00 150.00
+5 1 0 2 0 11 50 -1 -1 0.000 0 0 1 1 3870.000 5220.577 4455 6000 3855 6195 3285 6000
+	2 1 2.00 60.00 150.00
+	2 1 2.00 60.00 150.00
+5 1 0 2 0 11 50 -1 -1 0.000 0 0 1 1 4215.000 6981.818 4530 7200 4215 7365 3900 7200
+	2 1 2.00 60.00 150.00
+	2 1 2.00 60.00 150.00
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1200 3000 1800 3000 1800 3600 1200 3600 1200 3000
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1200 4200 1800 4200 1800 4800 1200 4800 1200 4200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1800 4200 2400 4200 2400 4800 1800 4800 1800 4200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1200 5400 1800 5400 1800 6000 1200 6000 1200 5400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2400 5400 3000 5400 3000 6000 2400 6000 2400 5400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1800 5400 2400 5400 2400 6000 1800 6000 1800 5400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1200 6600 1800 6600 1800 7200 1200 7200 1200 6600
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2400 6600 3000 6600 3000 7200 2400 7200 2400 6600
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1800 6600 2400 6600 2400 7200 1800 7200 1800 6600
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3000 6600 3600 6600 3600 7200 3000 7200 3000 6600
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1200 7800 1800 7800 1800 8400 1200 8400 1200 7800
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2400 7800 3000 7800 3000 8400 2400 8400 2400 7800
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1800 7800 2400 7800 2400 8400 1800 8400 1800 7800
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3000 7800 3600 7800 3600 8400 3000 8400 3000 7800
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3600 7800 4200 7800 4200 8400 3600 8400 3600 7800
+2 2 0 2 0 11 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4200 7800 4800 7800 4800 8400 4200 8400 4200 7800
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 1200 1800 1800 1800 1800 2400 1200 2400 1200 1800
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 2400 1800 3000 1800 3000 2400 2400 2400 2400 1800
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 3000 1800 3600 1800 3600 2400 3000 2400 3000 1800
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 4200 1800 4800 1800 4800 2400 4200 2400 4200 1800
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 1800 3000 2400 3000 2400 3600 1800 3600 1800 3000
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 2400 3000 3000 3000 3000 3600 2400 3600 2400 3000
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 3000 3000 3600 3000 3600 3600 3000 3600 3000 3000
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 4200 3000 4800 3000 4800 3600 4200 3600 4200 3000
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 3600 3000 4200 3000 4200 3600 3600 3600 3600 3000
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 2400 4200 3000 4200 3000 4800 2400 4800 2400 4200
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 3000 4200 3600 4200 3600 4800 3000 4800 3000 4200
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 3600 4200 4200 4200 4200 4800 3600 4800 3600 4200
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 4200 4200 4800 4200 4800 4800 4200 4800 4200 4200
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 4200 5400 4800 5400 4800 6000 4200 6000 4200 5400
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 3600 5400 4200 5400 4200 6000 3600 6000 3600 5400
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 3000 5400 3600 5400 3600 6000 3000 6000 3000 5400
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 3600 6600 4200 6600 4200 7200 3600 7200 3600 6600
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 4200 6600 4800 6600 4800 7200 4200 7200 4200 6600
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 1800 1800 2400 1800 2400 2400 1800 2400 1800 1800
+2 2 0 2 0 11 90 -1 20 0.000 0 0 7 0 0 5
+	 3600 1800 4200 1800 4200 2400 3600 2400 3600 1800
+4 0 0 50 -1 0 20 0.0000 4 210 300 3750 3375 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 4350 3375 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 1950 3375 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 1425 3375 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2625 3375 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 3225 3375 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 3750 4575 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 4350 4575 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 1425 4575 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 3750 5775 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 4350 5775 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 1425 5775 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2025 5775 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2625 5775 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 3150 5775 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 1425 6975 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2025 6975 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2625 6975 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 3750 6975 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 1425 8175 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2025 8175 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2625 8175 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 4350 8175 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 3675 8175 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 3225 8175 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 1350 2175 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 1950 2175 3\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 4350 2175 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 3750 2175 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2025 4575 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 3225 6975 8\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 4350 6975 10\001
+4 0 0 50 -1 0 20 0.0000 4 210 510 1830 1710 Min\001
+4 0 0 50 -1 0 20 0.0000 4 210 510 3030 2895 Min\001
+4 0 0 50 -1 0 20 0.0000 4 210 510 4230 5310 Min\001
+4 0 0 50 -1 0 20 0.0000 4 210 510 4230 6510 Min\001
+4 0 0 50 -1 0 20 0.0000 4 210 1215 2295 7665 suite tri\351e\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 3210 2175 5\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2610 2175 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 300 3120 4560 41\001
+4 0 0 50 -1 0 20 0.0000 4 210 150 2640 4560 7\001
+4 0 0 50 -1 0 20 0.0000 4 210 510 2430 4125 Min\001
+-6
diff --git a/lessons/tris/heapsort.tex b/lessons/tris/heapsort.tex
new file mode 100644
index 0000000000000000000000000000000000000000..1cc21665c6751bf0d7ae12e34641686381804802
--- /dev/null
+++ b/lessons/tris/heapsort.tex
@@ -0,0 +1,103 @@
+\documentclass[a4paper,11pt,dvips]{article}
+\usepackage{epsfig}
+%\usepackage[francais]{babel}
+\usepackage[T1]{fontenc}
+\usepackage[latin1]{inputenc}
+\usepackage{amsmath,amssymb}
+\usepackage{fancybox}
+\usepackage{boxedminipage}
+\oddsidemargin=0pt
+\evensidemargin=0pt
+\textwidth=450pt
+\textheight=670pt
+\parindent=0pt
+
+\begin{document}
+
+
+\section*{\center Le tri par tas ({\it Heapsort})}
+Le tableau � trier est interpr�t� abstraitement comme un arbre
+binaire. Le r�le de cette repr�sentation mentale est de permettre de
+r�organiser les donn�es en "tas" ce qui permettra de les trier
+efficacement. 
+     
+Les performances du tri par tas sont celles du tri par arbre dans le cas
+moyen, soit $O(N\log_2(N))$, avec le double avantage de n'avoir pas de
+pointeurs � manipuler (moins d'occupation m�moire) et d'�tre stable en
+complexit�. Il est en moyenne plus lent que le {\it Quicksort}, mais ne
+d�g�n�re pas en $O(N^2)$ dans le pire cas.
+ 
+\paragraph{Lien entre tableau et arbre.}
+Le tableau � trier peut �tre repr�sent� sous forme d'arbre comme
+structure abstraite (uniquement pour le raisonnement). On �tablit
+une correspondance entre arbre et tableau:
+\begin{itemize}
+\itemsep=-1pt
+\item La racine de l'arbre correspond au premier �l�ment du tableau. 
+\item Les deux fils d'un noeud d'indice $i$ ont pour indices: $2i+1$ et $2i+2$.
+\item Un �l�ment de rang $i$ a pour parent l'�l�ment d'indice: $(i-1)/2$.
+\end{itemize}
+Les �l�ments du tableau sont donc rang�s dans l'arbre niveau par
+niveau, de gauche � droite. Ainsi tous les niveaux de l'arbre sont
+complets sauf peut-�tre le dernier, qui ne peut �tre incomplet qu'�
+droite. Le parcours des indices du tableau correspond � un parcours
+en largeur de l'arbre (parcours de gauche � droite par niveau).
+La figure~\ref{corresp-arbre-tab} illustre la correspondance entre
+tableau et arbre.
+
+\begin{figure}[h!]
+\begin{center}
+\epsfig{file=figures/arbre_tab.eps, height=9cm, clip=}
+\caption{Correspondance entre tableau et arbre: les fl�ches donnent
+la structure d'arbre � partir des op�rations sur les indices ($2i+1$ et 
+$2i+2$ pour d�terminer les fils, et $(i-2)/2$~pour~le~parent).}
+\label{corresp-arbre-tab}
+\end{center}
+\end{figure}
+
+\paragraph{D�finition.}
+Un arbre est un tas si pour chacun de ses noeuds la valeur de
+chacun de ces descendants est inf�rieure ou �gale � sa propre
+valeur. Le mot "tas" est la traduction fran�aise du mot anglais 
+{\it heap}. Une meilleure terminologie, propos�e par J. Arsac, serait:
+structure d'�pi.
+
+\noindent
+Exemple de tas et de non-tas:
+
+\qquad 16 8 14 6 2 10 12 4 5
+est un tas
+
+\qquad 16 14 8 6 2 10 12 4 5
+ne forme pas un tas (10 > 8, 12 > 8)
+
+\noindent
+Ce tri op�re en deux phases: 
+\begin{itemize}
+\itemsep=-1pt
+\item entassement (ou tamisage) pour chaque noeud;
+\item algorithme de tri: extraction de la racine et entassement � 
+la racine.
+\end{itemize}
+
+\paragraph{Phase 1: entassement (ou tamisage).}
+
+Un entassement (ou tamisage) est l'op�ration de remplacer la valeur d'un noeud par
+$\max(noeud, fils\_gauche, fils\_droit)$ r�cursivement. Cette action de
+prendre l'�l�ment maximum parmi un parent et ses fils, s'appelle
+promotion. L'entassement, qui est donc une succession de promotions,
+d�bute depuis le noeud d'indice $N/2$ o� $N$ est la taille du tableau.
+
+\paragraph{Phase 2: tri des tas.}
+A chaque �tape $i=1,...,N-1$, on it�re
+le proc�d� suivant sur le sous-tableau allant de l'indice $0$ � $N-i$ inclus:
+\begin{itemize}
+\itemsep=-1pt
+\item on place l'�l�ment maximal (qui se trouve � la racine de l'arbre) � sa position d�finitive $N-i$;
+\item l'�l�ment qui se trouvait en position $N-i$ est plac� � la racine;
+\item le noeud le plus � droite du plus bas niveau prend la place de la racine, et est lui-m�me supprim�;
+\item on applique l'algorithme d'entassement � la racine.
+\end{itemize}
+
+
+\end{document}
diff --git a/lessons/tris/heapsort_expl.tex b/lessons/tris/heapsort_expl.tex
new file mode 100755
index 0000000000000000000000000000000000000000..076b1493d71831832b642a7686ef092131bdad7c
--- /dev/null
+++ b/lessons/tris/heapsort_expl.tex
@@ -0,0 +1,113 @@
+\documentclass[a4paper,11pt,dvips]{article}
+\usepackage{epsfig}
+%\usepackage[francais]{babel}
+\usepackage[T1]{fontenc}
+\usepackage[latin1]{inputenc}
+\usepackage{amsmath}
+\usepackage{fancybox}
+\usepackage{boxedminipage}
+\oddsidemargin=0pt
+\evensidemargin=0pt
+\textwidth=450pt
+\textheight=640pt
+\title{Exemple pour le tri par tas}
+\date{}
+
+\begin{document}
+
+%\maketitle
+\section*{Exemple pour le tri par tas}
+
+\subsection*{D�part}
+
+\noindent
+La figure 1 pr�sente la situation de d�part, le tableau � trier ainsi que sa repr�sentation sous forme d'arbre. L'arbre a �t� rempli de gauche � droite par niveaux en partant de la racine.
+
+\begin{figure}[!h]
+\begin{center}
+\epsfig{file=figures/depart.eps,height=6cm}
+\end{center}
+\caption{Situation de d�part}
+\end{figure}
+
+\subsection*{Phase 1}
+
+\noindent
+Il faut maintenant transformer l'arbre de d�part en tas. Ceci commence au noeud correspondant � l'indice $N/2$ du tableau. Comme le montre la figure 2, ce noeud contient la valeur 4 qui ne forme pas un tas car son fils contient une valeur plus grande 7. Il faut donc intervertir les valeurs.
+
+\begin{figure}[!h]
+\begin{center}
+\epsfig{file=figures/etape_1_1.eps,height=6cm}
+\end{center}
+\caption{Premier noeud trait�}
+\end{figure}
+
+\noindent
+Le noeud suivant � traiter contient la valeur 12, il forme un tas car 10 et 6 sont plus petit~que~lui.
+
+\noindent
+Le noeud suivant � traiter contient la valeur 5, qui ne forme pas un tas. Il faut r�organiser le sous-arbre afin qu'il forme un tas en pla�ant $\max(5,3,8)$, c'est � dire 8, � la place de 5. Ceci est r�alis� � la figure 3. 
+
+\begin{figure}[!h]
+\begin{center}
+\epsfig{file=figures/etape_1_2.eps,height=6cm}
+\end{center}
+\caption{Second noeud trait�}
+\end{figure}
+
+\noindent
+Le noeud suivant � traiter contient la valeur 16, il forme un tas car 10 et 6 sont plus petit~que~lui.
+
+\noindent
+Il faut maintenant traiter la racine. La valeur 1 est remplac�e par $\max(1,16,8)$, ce qui est repr�sent� � la figure 4.
+
+\begin{figure}[!h]
+\begin{center}
+\epsfig{file=figures/etape_1_2b.eps,height=6cm}
+\end{center}
+\caption{Traitement de la racine}
+\end{figure}
+
+\newpage
+\noindent
+Il faut maintenant r�it�rer ce traitement jusqu'� la feuille. Ceci donne le r�sultat final de la premi�re phase pr�sent� � la figure 5.
+
+\begin{figure}[!h]
+\begin{center}
+\epsfig{file=figures/etape_1_3.eps,height=6cm,}
+\end{center}
+\caption{Traitement de la racine}
+\end{figure}
+
+
+\subsection*{Phase 2}
+
+\noindent
+La seconde phase consiste � enlever l'�l�ment racine de l'arbre et � le placer en fin de tableau. L'�l�ment qui se trouvait � cette place est plac� � la racine et trait� comme dans la premi�re phase. L'arbre doit toujours �tre un tas. Le traitement de la valeur 16 est pr�sent� � la figure 6.
+
+\begin{figure}[!h]
+\begin{center}
+\epsfig{file=figures/etape_2_1.eps,height=6cm}
+\end{center}
+\caption{Plus grande valeur trait�e}
+\end{figure}
+
+\newpage
+\noindent
+Il faut maintenant traiter la valeur 12 de mani�re similaire sur un arbre et un tableau de dimensions $N-1$. Et ainsi de suite pour tous les �l�ments du tableau (respectivement de l'arbre). Deux �tapes sont pr�sent�es aux figures 7 et 8. 
+
+\begin{figure}[!h]
+\begin{center}
+\epsfig{file=figures/etape_2_2.eps,height=6cm}
+\end{center}
+\caption{Deuxi�me valeur trait�e}
+\end{figure}
+
+\begin{figure}[!h]
+\begin{center}
+\epsfig{file=figures/etape_2_3.eps,height=5cm}
+\end{center}
+\caption{Troisi�me valeur trait�e}
+\end{figure}
+
+\end{document}
diff --git a/lessons/tris/tri_rapide.tex b/lessons/tris/tri_rapide.tex
new file mode 100644
index 0000000000000000000000000000000000000000..f6b46a0afa9af7c03c9eb6a5d46bc1c1cbcbe010
--- /dev/null
+++ b/lessons/tris/tri_rapide.tex
@@ -0,0 +1,86 @@
+\documentclass[a4paper,12pt,dvips]{article}
+\usepackage{epsfig}
+%\usepackage[francais]{babel}
+\usepackage[T1]{fontenc}
+\usepackage[latin1]{inputenc}
+\usepackage{amsmath}
+\usepackage{fancybox}
+\usepackage{boxedminipage}
+\pagestyle{myheadings}
+\markright{Algorithmes de tri} 
+\oddsidemargin=0pt 
+\evensidemargin=0pt 
+\textwidth=450pt 
+\textheight=670pt 
+\newcommand{\entete}{ 
+\begin{tabular}{|p{14cm}|} 
+\hline 
+\medskip 
+\centerline{\fontsize{16pt}{10}\selectfont  
+\bf Algorithmes \& Structures de donn\'ees}\\ 
+\hline \\ 
+\centerline{\fontsize{14pt}{10}\selectfont \it Algorithmes de tri}\\ 
+\hline  
+\vspace{-2mm} 
+\fontsize{8pt}{10}\selectfont HEPIA, HES-SO//Gen\`eve - ITI\\ 
+\hline 
+\end{tabular} 
+} 
+ 
+\begin{document} 
+\thispagestyle{empty}
+%\entete 
+ 
+%http://www.u-cergy.fr/depinfo/mias1/semestre2/CM-S2-2005/CM-S2-2005.html 
+ 
+\section*{Le tri rapide ({\it Quicksort})} 
+Le tri rapide (appel� aussi tri de ``Hoare'', du nom de son inventeur, 
+ou encore tri par segmentation), est l'un des algorithmes de tri 
+interne les plus efficaces. Le principe de cette m�thode est 
+d'ordonner un tableau $Tab[0..N-1]$ en cherchant dans celui-ci un 
+�l�ment pivot autour duquel r�organiser les �l�ments. Il s'agit d'un 
+tri dichotomique naturellement r�cursif. Il d�montre fort 
+judicieusement qu'en informatique, la strat�gie qui consiste � diviser 
+pour r�gner ({\it divide-and-conquer}) peut s'av�rer tr�s performante. 
+Le choix du pivot est d�terminant pour l'efficacit� de l'algorithme. 
+Il est souhaitable que la valeur du pivot soit aussi proche que 
+possible de la valeur centrale du tableau, pour qu'il y ait autant 
+d'�l�ments pr�c�dant le pivot que le suivant. Cependant, d'autres strat�gies 
+sont possibles. 
+ 
+Consid�rons deux indices, $I$ et $J$ tels que $I$ est initialis� � $0$,  
+et $J$ � $N-1$. Le but est de partitionner le tableau de mani�re � 
+ce que les conditions suivantes soient r�alis�es: 
+\begin{enumerate} 
+\item l'�l�ment $Tab[N-1]$ occupe sa place d�finitive dans le tableau; 
+\item tous les �l�ments situ�s � gauche de $Tab[N-1]$ sont plus petits  
+que lui; 
+\item tous les �l�ments situ�s � droite de $Tab[N-1]$ sont plus grands  
+que lui. 
+\end{enumerate} 
+Pour ce faire, il suffit d'incr�menter $I$ � la recherche d'un terme 
+sup�rieur ou �gal � $Tab[N-1]$, et de d�cr�menter $J$ pour trouver un 
+terme inf�rieur ou �gal � $Tab[N-1]$, d'�changer ces termes, et de 
+poursuivre jusqu'� ce que les indices $I$ et $J$ se croisent. Si l'on 
+ins�re alors le terme $Tab[N-1]$ � la position $I$, on est assur� qu'il 
+occupe sa place d�finitive (l'�l�ment $Tab[N-1]$ joue ici le r�le du 
+pivot). On recommence ce processus sur chacun des sous-tableaux 
+$Tab[0..I-1]$ et $Tab[I+1..N-1]$ (voir Fig.~\ref{expl-quicksort}). 
+ 
+\begin{figure}[!h]  
+\begin{center} 
+\epsfig{file=figures/quicksort.eps, height=6cm, clip=} 
+\caption{Exemple de tri rapide sur un tableau de 7 �l�ments.} 
+\label{expl-quicksort} 
+\end{center} 
+\end{figure} 
+ 
+\paragraph{Complexit�.} 
+Le meilleur cas correspond au cas o� chaque partition subdivise le 
+tableau en deux parties de m�me taille, et le pire cas est par exemple 
+celui d'un tableau d�j� tri� en ordre d�croissant avec le choix du 
+dernier �l�ment comme pivot. Dans le meilleur cas et le cas moyen, la 
+complexit� du {\it Quicksort} est $O(N\log_2(N))$ (le quicksort demande en moyenne
+$1.38N\log_2(N)$ comparaisons), mais d�g�n�re en $O(N^2)$ dans~le~pire~cas. 
+ 
+\end{document}
diff --git a/lessons/tris/tris.tex b/lessons/tris/tris.tex
new file mode 100644
index 0000000000000000000000000000000000000000..04c2a5721e22c821c73b3052a82e9b57710e6d04
--- /dev/null
+++ b/lessons/tris/tris.tex
@@ -0,0 +1,618 @@
+\documentclass[a4paper,12pt,dvips]{article}
+\usepackage{epsfig}
+%\usepackage[francais]{babel}
+\usepackage[T1]{fontenc}
+\usepackage[latin1]{inputenc}
+\usepackage{amsmath}
+\usepackage{fancybox}
+\usepackage{boxedminipage}
+\pagestyle{myheadings}
+\markright{Algorithmes de tri} 
+\oddsidemargin=0pt 
+\evensidemargin=0pt 
+\textwidth=450pt 
+\textheight=670pt 
+\newcommand{\entete}{ 
+\begin{tabular}{|p{14cm}|} 
+\hline 
+\medskip 
+\centerline{\fontsize{18pt}{10}\selectfont  
+\bf Algorithmique \& Structures de donn\'ees}\\ 
+\hline \\ 
+\centerline{\fontsize{16pt}{10}\selectfont \it Algorithmes de tri}\\ 
+\hline  
+\vspace{-2mm} 
+\fontsize{8pt}{10}\selectfont HES-SO/EIG - TI1\\ 
+\fontsize{8pt}{10}\selectfont Paul ALBUQUERQUE, Michel LAZEYRAS et St�phane MALANDAIN\\ 
+\hline 
+\end{tabular} 
+} 
+ 
+\begin{document} 
+\thispagestyle{empty}
+\entete 
+ 
+%http://www.u-cergy.fr/depinfo/mias1/semestre2/CM-S2-2005/CM-S2-2005.html 
+ 
+\section{Introduction}  
+Les algorithmes de tri sont d'une tr�s grande importance en pratique, 
+comme par exemple en informatique de gestion o� l'on trie de mani�re 
+quasi-syst�matique les donn�es avant de les utiliser. L'�tude des 
+diff�rentes fa�ons de trier des informations est sans doute un des 
+domaines de l'algorithmique qui a retenu le plus d'attention. 
+ 
+Il est ais� de trier des centaines voire de milliers 
+d'�l�ments. Cependant, d�s qu'on en consid�re plusieurs millions, la 
+t�che est toute autre et l'on doit faire le moins de ``balayages'' 
+possibles � travers l'ensemble des �l�ments. C'est ce qui d�termine la 
+complexit� d'un algorithme, � savoir le nombre total de fois que sont 
+trait�s l'ensemble des �l�ments avant d'aboutir � une solution. 
+ 
+Formellement, on consid�re un ensemble d'�l�ments constitu�s d'une 
+information et d'une cl� avec une relation d'ordre sur les cl�s. Une 
+op�ration de tri sur cette ensemble consiste � ordonner ces �l�ments 
+selon la valeur de leur cl�. 
+
+Cinq algorithmes seront pr�sent�s dans ce document:
+\begin{itemize} 
+\item le tri par insertion;
+\item le tri par s�lection;
+\item le tri � bulles; 
+\item le tri rapide;
+\item le tri par tas.
+\end{itemize} 
+ 
+\section{Complexit� d'un algorithme} 
+Un probl�me informatique peut souvent �tre r�solu par diff�rents 
+algorithmes. La complexit� d'un algorithme est un crit�re d'�valuation 
+qui permet d'en anticiper les performances. Cette mesure permet aussi 
+la comparaison entre eux d'algorithmes r�solvant un m�me probl�me 
+comme par exemple le tri d'un tableau de nombres entiers. 
+La complexit� comporte deux aspects: 
+\begin{itemize} 
+\item la complexit� en temps, qui renseigne sur l'ordre de grandeur du 
+temps n�cessaire pour terminer l'algorithme en fonction de certains 
+param�tres; 
+\item la complexit� en espace, qui renseigne sur l'ordre de grandeur 
+de la place m�moire n�cessaire � l'ex�cution de l'algorithme. 
+\end{itemize} 
+Consid�rons l'exemple simple de la recherche d'un entier dans un tableau  
+tri�. On envisage assez naturellement deux m�thodes de recherche: 
+\begin{enumerate} 
+\item  
+On fait une recherche s�quentielle depuis le d�but du tableau tri�. On 
+interrompt la recherche d�s que l'on arrive sur un entier sup�rieur ou 
+�gal � celui cherch�. 
+\item  
+On fait une recherche dichotomique. On compare l'entier cherch� avec 
+celui situ� au milieu du tableau. En cas d'�galit�, on a fini; si 
+l'entier cherch� est inf�rieur (resp. sup�rieur), il suffit de 
+poursuivre la recherche dans la premi�re (resp. seconde) moiti� du 
+tableau. On peut it�rer ce proc�d� jusqu'� arriver � une partie de 
+tableau r�duite � un �l�ment. 
+\end{enumerate} 
+De mani�re intuitive, on voit que la seconde m�thode est beaucoup plus 
+performante que la premi�re: 
+\begin{itemize} 
+\item dans le premier cas, chaque test r�duit l'espace de recherche  
+d'un �l�ment; 
+\item dans le second, chaque test le r�duit de moiti�. 
+\end{itemize} 
+La premi�re m�thode demande statistiquement un nombre de tests 
+proportionnel au nombre d'�l�ments stock�s dans le tableau: il faudra 
+en moyenne en parcourir la moiti� pour obtenir une r�ponse. 
+En revanche, avec la seconde m�thode, comme on divise par deux la 
+taille du tableau � explorer apr�s chaque test, le nombre de tests � 
+effectuer est proportionnel au logarithme de la taille du tableau 
+initial. 
+Prenons un exemple quantitatif: si on a un tableau de 1'000'000 
+d'entiers, et qu'un test d'�galit� entre deux entiers prend environ 10 
+nanosecondes de temps de calcul, la premi�re m�thode fournit sa 
+r�ponse en $10^6\cdot 10^{-8}[s] = 10[ms]$, soit environ 10 millisecondes. 
+La seconde r�clame $(\log_2 10^6)\cdot 10^{-8}[s]$, soit environ 200 
+nanosecondes ... 
+ 
+L'efficacit� d'un algorithme d�pend essentiellement de l'utilisation 
+de deux ressources: le temps CPU ({\it Central Processing Unit}, 
+c.-�-d. unit� centrale de calcul) et la place m�moire. Or il se trouve 
+qu'en g�n�ral un gain dans l'utilisation de l'une se traduit par une 
+perte au niveau de l'autre: on parle alors de compromis espace/temps.  
+Ici, on se limitera � examiner la complexit� en temps. Le calcul 
+pr�cis de la complexit� d'un algorithme se fait en g�n�ral avec des 
+hypoth�ses simplificatrices: 
+\begin{enumerate} 
+\item On choisit explicitement une ou plusieurs op�rations consid�r�es 
+comme �l�mentaires (ou fondamentales), c.-�-d. requ�rant un quantum de 
+temps. Dans le cas des tris, on consid�rera les affectations et les 
+comparaisons. La mesure de la complexit� se fera dans cette unit�. 
+\item La complexit� d'un algorithme d�pend souvent des donn�es 
+trait�es. On consid�re trois situations: (i) le meilleur cas (les 
+donn�es pour lesquelles l'algorithme est le plus rapide), (ii) le pire 
+cas (les donn�es pour lesquelles l'algorithme est le plus lent), 
+et (iii) le cas moyen (la rapidit� moyenne de l'algorithme sur 
+l'ensemble des donn�es possibles). 
+\end{enumerate} 
+La complexit� dans le cas moyen et dans le meilleur des cas sont les 
+plus difficiles � estimer. C'est pourquoi on se contente souvent de 
+calculer la complexit� dans le pire cas, ce qui fournit une borne 
+sup�rieure sur le temps de calcul du programme. 
+ 
+Dans la suite, on comptabilisera le nombre d'op�rations �l�mentaires 
+(affectations et comparaisons) en fonction du nombre d'�l�ments $N$ � 
+trier. On utilisera la notation $O(f(N))$ dite de "Landau" dans 
+laquelle on estime le nombre d'op�rations �l�mentaires � 
+multiplication par une constante pr�s ($f$ est la fonction de 
+complexit�). Dans la table~\ref{ordre-grandeur}, on donne les valeurs 
+approximatives de quelques fonctions $f(N)$ qui interviennent 
+souvent dans les estimations de complexit�. 
+\begin{table}[!h]  
+\begin{center} 
+\caption{Valeurs approximatives de quelques fonctions usuelles de complexit�.} 
+\medskip 
+\begin{tabular}{|c|c|c|c|c|} 
+\hline 
+$\log_2(N)$ & $\sqrt{N}$      & $N$    & $N\log_2(N)$    & $N^2$     \\ 
+\hline\hline 
+$3$         & $3$             & $10$   & $30$            & $10^2$    \\ 
+\hline 
+$6$         & $10$            & $10^2$ & $6\cdot 10^2$   & $10^4$    \\ 
+\hline 
+$9$         & $31$            & $10^3$ & $9\cdot 10^3$   & $10^6$    \\ 
+\hline 
+$13$        & $10^2$          & $10^4$ & $1.3\cdot 10^5$ & $10^8$    \\ 
+\hline 
+$16$        & $3.1\cdot 10^2$ & $10^5$ & $1.6\cdot 10^6$ & $10^{10}$ \\ 
+\hline 
+$19$        & $10^3$          & $10^6$ & $1.9\cdot 10^7$ & $10^{12}$ \\ 
+\hline 
+\end{tabular} 
+\label{ordre-grandeur} 
+\end{center} 
+\end{table} 
+
+\section{Quelques algorithmes de tri}
+\subsection{Le tri par insertion} 
+Il s'agit d'une m�thode de tri tr�s naturelle. C'est d'ailleurs le tri 
+le plus efficace sur des tableaux de petites tailles. Son principe est 
+simple: on prend un �l�ment du tableau et on le met � sa place parmi 
+les �l�ments d�j� tri�s, puis on recommence avec le suivant, jusqu'au 
+dernier. Cela revient � dire que l'on ins�re � la $I$-�me it�ration le 
+$I$-�me �l�ment � la bonne place. Une illustration est donn�e dans la 
+figure~\ref{expl-insertion} et une impl�mentation en ADA de l'algorithme 
+dans la figure~\ref{code-insertion}. 
+\begin{figure}[!h]  
+\begin{center} 
+\epsfig{file=figures/tri_insert.eps, height=8cm, clip=} 
+\caption{Exemple de tri par insertion sur un tableau de 6 �l�ments.} 
+\label{expl-insertion} 
+\end{center} 
+\end{figure} 
+\begin{figure}[!h] 
+\begin{center} 
+\begin{verbatim} 
+  procedure Tri_Insertion(Tab : in out T_Tableau) is 
+     Temp   : T_Info; 
+     Indice : Natural; 
+  begin 
+     -- � partir de l'indice 2, on place l'�l�ment Tab(I) 
+     for I in Tab'First+1..Tab'Last loop 
+        Indice := I; 
+        Temp   := Tab(I); 
+        -- recherche de la place de l'�l�ment I, avec d�calage 
+        while Indice > 1 and then Tab(Indice-1) > Temp loop 
+           Tab(Indice) := Tab(Indice-1); 
+           Indice      := Indice - 1; 
+        end loop; 
+        Tab(Indice) := Temp; 
+     end loop; 
+  end Tri_Insertion; 
+\end{verbatim} 
+\caption{Impl�mentation du tri par insertion.} 
+\label{code-insertion} 
+\end{center} 
+\end{figure} 
+\paragraph{Exercice.}  
+Ecrire une procedure r�cursive pour le tri par insertion. 
+ 
+\paragraph{Complexit�.} Le pire cas est celui d'une tableau d�j� tri�,  
+mais en ordre d�croissant: l'insertion du $I$-�me �l�ment n�cessite 
+$I-1$ comparaisons, donc un total $1+...+(N-3)+(N-2)+(N-1) = N(N-1)/2$ 
+comparaisons, et similairement pour les affectations. Le meilleur cas 
+est celui d'un tableau d�j� tri� en ordre croissant: l'insertion du 
+$I$-�me �l�ment n�cessite $1$ comparaison, donc un total $(N-1)$ 
+comparaisons, et similairement pour les affectations. Le cas moyen 
+n�cessite approximativement $N^2/4$ comparaisons et autant 
+d'affectations. Si on ne retient que l'ordre de grandeur, la 
+complexit� du tri par insertion est $O(N^2)$ (complexit� quadratique) 
+en moyenne et dans le pire cas, et $O(N)$ (complexit� lin�aire) dans 
+le meilleur cas. Contrairement � d'autres m�thodes de tri, son 
+efficacit� est meilleure si le tableau initial poss�de un certain 
+ordre car l'algorithme tire parti de tout ordre partiel pr�sent dans 
+le tableau. 
+ 
+\subsection{Le tri par s�lection (ou tri par extraction)} 
+Le principe du tri par s�lection d'un tableau $Tab(1..N)$ est d'aller 
+chercher le plus petit �l�ment du tableau pour le mettre en premi�re 
+position, puis de chercher le plus petit �l�ment du sous-tableau 
+$Tab(2..N)$ pour le mettre en second, etc.., jusqu'� ce que l'on ait 
+plac� $N-1$ �l�ments dans le tableau. Au $I$-�me passage, on 
+s�lectionne l'�l�ment ayant la plus petite cl� parmi les �l�ments 
+$Tab(I),...,Tab(N)$ et on l'�change avec $Tab(I)$.  Une illustration 
+est donn�e dans la figure~\ref{expl-selection} et une impl�mentation en 
+ADA de l'algorithme dans la figure~\ref{code-selection}. 
+ 
+\begin{figure}[!h]  
+\begin{center} 
+\epsfig{file=figures/tri_select.eps, height=8cm, clip=} 
+\caption{Exemple de tri par s�lection sur un tableau de 6 �l�ments.} 
+\label{expl-selection} 
+\end{center} 
+\end{figure} 
+ 
+\begin{figure}[!h] 
+\begin{center} 
+\begin{verbatim} 
+  procedure Tri_Selection(Tab : in out T_Tableau) is 
+     Min : Natural; 
+  begin 
+     for I in Tab'First..Tab'Last-1 loop 
+        Min := I; 
+        -- recherche du minimum dans la tranche de tableau 
+        for J in I+1..Tab'Last loop 
+           if Tab(Min) > Tab(J) then 
+              Min := J; 
+           end if; 
+        end loop; 
+        -- permutation de l'�l�ment I avec l'�l�ment minimum 
+        Echanger(Tab(I),Tab(Min)); 
+     end loop; 
+  end Tri_Selection; 
+\end{verbatim} 
+\caption{Impl�mentation du tri par s�lection.} 
+\label{code-selection} 
+\end{center} 
+\end{figure} 
+ 
+\paragraph{Complexit�.} Pour chaque $I=1,\dots,N-1$, on a un �change  
+(c.-�-d. 3 affectations) et $N-I$ comparaisons ce qui fait un total de 
+$N(N-1)/2$ comparaisons et $N-1$ �changes. La seule d�pendance 
+relative aux donn�es est le nombre de fois que $Min$ est mis � jour: 
+$O(N^2)$ dans le pire cas, mais $O(N\log_2 (N))$ en moyenne. Ainsi, le 
+tri par s�lection est essentiellement insensible aux donn�es et sa 
+complexit� est toujours quadratique ($O(N^2)$). 
+ 
+\subsection{Le tri � bulles (ou tri par permutation)} 
+Le tri � bulles consiste en des comparaisons successives de toutes les 
+paires d'�l�ments adjacents d'un tableau avec permutation des �l�ments 
+de la paire si celle-ci est d�sordonn�e. Ainsi, en comparant deux � 
+deux les �l�ments successifs d'un tableau (parcours de gauche � droite 
+par exemple) et en les permutant lorsque c'est n�cessaire, on a � 
+chaque tour un nouvel �l�ment plac� dans sa position d�finitive. On 
+recommence cette op�ration tant que tous les �l�ments ne sont pas 
+tri�s, d'abord avec le sous-tableau $Tab(1..N-1)$, puis avec le 
+sous-tableau $Tab(1..N-2)$, ... , jusqu'� $Tab(1..2)$. Si au cours 
+d'un passage aucun �change n'est observ�, on arr�te le processus 
+puisque cela signifie que le tableau est enfin tri�. Cette m�thode est 
+appel�e le tri � bulles car les �l�ments mal class�s remontent dans la 
+liste comme des bulles � la surface d'un liquide. Une illustration 
+est donn�e dans la figure~\ref{expl-bulles} et une impl�mentation en ADA 
+de l'algorithme dans la figure~\ref{code-bulles}. 
+ 
+\begin{figure}[!h] 
+\begin{center} 
+\epsfig{file=figures/tri_bulles.eps, height=7cm, clip=} 
+\caption{Exemple de tri � bulles sur un tableau de 6 �l�ments.} 
+\label{expl-bulles} 
+\end{center} 
+\end{figure} 
+ 
+\begin{figure}[!h] 
+\begin{center} 
+\begin{verbatim} 
+  procedure Tri_Bulles(Tab : in out T_Tableau) is 
+     Fini : Boolean; 
+  begin 
+     for I in Tab'First..Tab'Last-1 loop 
+        Fini := True; 
+        for J in Tab'First..Tab'Last-I loop 
+           -- si deux �l�ments cons�cutifs ne sont pas dans l'ordre, 
+           -- il faut les permuter 
+           if Tab(J) > Tab(J+1) then 
+              Echanger(Tab(J),Tab(J+1)); 
+              Fini := False;  
+           end if; 
+        end loop; 
+        -- s'il n'y a pas eu d'�changes, alors le tableau est d�j� tri�
+        exit when Fini; 
+     end loop; 
+  end Tri_Bulle; 
+\end{verbatim} 
+\caption{Impl�mentation du tri � bulles.} 
+\label{code-bulles} 
+\end{center} 
+\end{figure} 
+ 
+\paragraph{Complexit�.} Le pire cas est celui d'un tableau d�j� tri�,  
+mais en ordre d�croissant: le $I$-�me passage n�cessite $N-I$ 
+comparaisons et $3(N-I)$ affectations (un �change n�cessite 3 
+affectations), donc un total de $N(N-1)/2$ comparaisons et $3N(N-1)/2$ 
+affectations. Le meilleur cas est celui d'un tableau d�j� tri� en 
+ordre croissant: seul un passage � travers le tableau est n�cessaire, 
+comprenant $N-1$ comparaisons. Cependant, le cas moyen ne se distingue 
+pas significativement du pire cas et n�cessite approximativement 
+$N^2/2$ comparaisons et $3N^2/2$ affectations. La complexit� du tri � 
+bulles est donc $O(N^2)$ (complexit� quadratique) en moyenne et dans 
+le pire cas, et $O(N)$ (complexit� lin�aire) dans le meilleur cas. 
+ 
+\subsection{Le tri rapide ({\it Quicksort})} 
+Le tri rapide (appel� aussi tri de ``Hoare'', du nom de son inventeur, 
+ou encore tri par segmentation), est l'un des algorithmes de tri 
+interne les plus efficaces. Le principe de cette m�thode est 
+d'ordonner un tableau $Tab(1..N)$ en cherchant dans celui-ci un 
+�l�ment pivot autour duquel r�organiser les �l�ments. Il s'agit d'un 
+tri dichotomique naturellement r�cursif. Il d�montre fort 
+judicieusement qu'en informatique, la strat�gie qui consiste � diviser 
+pour r�gner ({\it divide-and-conquer}) peut s'av�rer tr�s performante. 
+Le choix du pivot est d�terminant pour l'efficacit� de l'algorithme. 
+Il est souhaitable que la valeur du pivot soit aussi proche que 
+possible de la valeur centrale du tableau, pour qu'il y ait autant 
+d'�l�ments pr�c�dant le pivot que le suivant. Cependant, d'autres strat�gies 
+sont possibles. 
+ 
+Consid�rons deux indices, $I$ et $J$ tels que $I$ est initialis� � $1$,  
+et $J$ � $N-1$. Le but est de partitionner le tableau de mani�re � 
+ce que les conditions suivantes soient r�alis�es: 
+\begin{enumerate} 
+\item l'�l�ment $Tab(N)$ occupe sa place d�finitive dans le tableau; 
+\item tous les �l�ments situ�s � gauche de $Tab(N)$ sont plus petits  
+que lui; 
+\item tous les �l�ments situ�s � droite de $Tab(N)$ sont plus grands  
+que lui. 
+\end{enumerate} 
+Pour ce faire, il suffit d'incr�menter $I$ � la recherche d'un terme 
+sup�rieur ou �gal � $Tab(N)$, et de d�cr�menter $J$ pour trouver un 
+terme inf�rieur ou �gal � $Tab(N)$, d'�changer ces termes, et de 
+poursuivre jusqu'� ce que les indices $I$ et $J$ se croisent. Si l'on 
+ins�re alors le terme $Tab(N)$ � la position $I$, on est assur� qu'il 
+occupe sa place d�finitive (l'�l�ment $Tab(N)$ joue ici le r�le du 
+pivot). On recommence ce processus sur chacun des sous-tableaux 
+$Tab(1..I-1)$ et $Tab(I+1..N)$. Une illustration est donn�e dans la 
+figure~\ref{expl-quicksort} et une impl�mentation en ADA de l'algorithme 
+dans la figure~\ref{code-quicksort}. 
+ 
+\begin{figure}  
+\begin{center} 
+\epsfig{file=figures/quicksort.eps, height=7cm, clip=} 
+\caption{Exemple de tri rapide sur un tableau de 7 �l�ments.} 
+\label{expl-quicksort} 
+\end{center} 
+\end{figure} 
+
+\begin{figure}[!h] 
+\begin{center}   
+\begin{verbatim} 
+  -- tri rapide avec le dernier �l�ment du tableau choisi comme pivot;  
+  -- la procedure est r�cursive 
+
+  procedure Tri_Rapide(Tab : in out T_Tableau) is 
+     -- partition du tableau: le pivot est plac� � sa position, les �l�ments 
+     -- inf�rieurs au pivot avant celui-ci, ceux sup�rieurs apr�s     
+     procedure Partition(Tab : in out T_Tableau;  
+                         P   : in out Integer) is 
+        I : Integer := Tab'First; 
+        J : Integer := Tab'Last-1; 
+     begin 
+        Echanger(Tab(Tab'Last),Tab(P)); 
+        loop 
+           loop -- recherche d'un �l�ment plus grand que le pivot 
+              I := I+1; 
+              exit when Tab(I) >= Tab(P); 
+           end loop; 
+           loop -- recherche d'un �l�ment plus petit que le pivot 
+              J := J-1; 
+              exit when Tab(J) <= Tab(P) or I>=J; 
+           end loop; 
+           exit when I >= J; 
+           Echanger(Tab(I),Tab(J)); 
+        end loop; 
+        -- le pivot est mis � sa place 
+        Echanger(Tab(I),Tab(P)); 
+        P := I; 
+     end Partition; 
+     Pivot : Integer := Tab'Last;  -- Choix du pivot 
+  begin 
+     -- le tableau au moins deux �l�ments 
+     if Tab'Last > Tab'First then 
+        -- le pivot se retouve � la bonne position dans le tableau  
+        -- apr�s la partition de celui-ci 
+        Partition(Tab,Pivot); 
+        -- appel r�cursif avec la tranche de tableau gauche 
+        Tri_Rapide(Tab(Tab'First..Pivot-1)); 
+        -- appel r�cursif avec la tranche de tableau droite 
+        Tri_Rapide(Tab(Pivot+1..Tab'Last)); 
+     end if; 
+  end Tri_Rapide; 
+\end{verbatim}  
+\caption{Impl�mentation du tri rapide.} 
+\label{code-quicksort} 
+\end{center} 
+\end{figure} 
+ 
+\paragraph{Complexit�.} 
+Le meilleur cas correspond au cas o� chaque partition subdivise le 
+tableau en deux parties de m�me taille, et le pire cas est par exemple 
+celui d'un tableau d�j� tri� en ordre d�croissant avec le choix du 
+dernier �l�ment comme pivot. Dans le meilleur cas et le cas moyen, la 
+complexit� du {\it Quicksort} est $O(N\log_2(N))$ (le quicksort n�cessite 
+$1.38N\log_2(N)$ comparaisons en moyenne), mais d�g�n�re en $O(N^2)$ dans 
+le pire cas. 
+ 
+\subsection{Le tri par tas ({\it Heapsort})} 
+Le tableau � trier est interpr�t� abstraitement comme un arbre 
+binaire. Le r�le de cette repr�sentation mentale est de permettre de 
+r�organiser les donn�es en ``tas'' ce qui permettra de les trier 
+efficacement.  
+      
+Les performances du tri par tas sont celles du tri par arbre dans le cas 
+moyen - $O(N\log_2(N))$ - avec le double avantage de n'avoir pas de 
+pointeurs � manipuler (moins d'occupation m�moire) et d'�tre stable en 
+complexit�. Il est en moyenne plus lent que le {\it Quicksort}, mais ne 
+d�g�n�re pas en $O(N^2)$ dans le pire cas. 
+  
+\paragraph{Lien entre tableau et arbre.} 
+Le tableau � trier peut �tre repr�sent� sous forme d'arbre comme 
+structure abstraite (uniquement pour le raisonnement). On �tablit 
+une correspondance entre arbre et tableau: 
+\begin{itemize} 
+\item  
+La racine de l'arbre correspond au premier �l�ment du tableau   
+\item  
+Les deux fils d'un noeud d'indice $I$ ont pour indices: $2I$ et $2I+1$. 
+\item  
+Un �l�ment de rang $I$ a pour parent l'�l�ment d'indice: $I/2$. 
+\end{itemize} 
+Les �l�ments du tableau sont donc rang�s dans l'arbre niveau par 
+niveau, de gauche � droite. Ainsi tous les niveaux de l'arbre sont 
+complets sauf peut-�tre le dernier, qui ne peut �tre incomplet qu'� 
+droite. Le parcours des indices du tableau correspond � un parcours 
+en largeur de l'arbre (parcours de gauche � droite par niveau). 
+La figure~\ref{corresp-arbre-tab} illustre la correspondance entre 
+tableau et arbre. 
+ 
+\begin{figure}[!h] 
+\begin{center} 
+\epsfig{file=figures/arbre_tab.eps, height=9cm, clip=} 
+\caption{Correspondance entre tableau et arbre: les fl�ches expriment 
+la structure d'arbre � partir des op�rations sur les indices ($2I$ et  
+$2I+1$ pour d�terminer les fils, et $I/2$ pour le parent).} 
+\label{corresp-arbre-tab} 
+\end{center} 
+\end{figure} 
+ 
+\paragraph{D�finition.} 
+Un arbre est un tas si pour chacun de ses noeuds la valeur de 
+chacun de ces descendants est inf�rieure ou �gale � sa propre 
+valeur. Le mot ``tas'' est la traduction fran�aise du mot anglais  
+{\it heap}. Une meilleure terminologie, propos�e par J.Arsac, serait: 
+structure d'�pi. Deux exemples sont donn�s � la figure~\ref{exemple-tas}.
+ 
+\begin{figure}[!h] 
+\begin{center} 
+\epsfig{file=figures/tas.eps, height=4cm, clip=} 
+\caption{Illustration de la notion de tas.} 
+\label{exemple-tas} 
+\end{center} 
+\end{figure}
+
+Ce tri op�re en deux phases:
+\begin{itemize} 
+\item la premi�re phase, l'entassement, transforme l'arbre originel en un arbre formant un tas;
+\item la seconde phase est l'algorithme de tri proprement dit.
+\end{itemize} 
+ 
+\paragraph{Phase 1: entassement.} 
+ 
+Un entassement est l'op�ration de remplacer la valeur d'un noeud par 
+$\max(noeud, fils\_gauche, fils\_droit)$ r�cursivement. Cette action de 
+prendre l'�l�ment maximum parmi un parent et ses fils, s'appelle 
+promotion. L'entassement, qui est donc une succession de promotions, 
+d�bute depuis le noeud d'indice $N/2$ o� $N$ est la taille du tableau.  
+ 
+\paragraph{Phase 2: tri des tas.} 
+A chaque �tape $I=1,...,N-1$, on it�re 
+le proc�d� suivant sur le sous-tableau $Tab(1..N-I+1)$: 
+\begin{itemize} 
+\item on place l'�l�ment maximal (qui se trouve � la 
+racine de l'arbre) � sa position d�finitive $N-I+1$; 
+\item l'�l�ment qui se trouvait en position $N-I+1$ est plac� � la racine; 
+\item le noeud le plus � droite du plus bas niveau prend la place de  
+la racine, et est lui-m�me supprim�; 
+\item on applique l'algorithme d'entassement � la racine. 
+\end{itemize} 
+ 
+\paragraph{Exemple de tri par tas}
+
+La figure~\ref{fig_1} pr�sente la situation de d�part, le tableau � trier ainsi que sa repr�sentation sous forme d'arbre. L'arbre � �t� remplis de gauche � droite par niveaux en partant de la racine.
+
+\begin{figure}[!h]
+\begin{center}
+\epsfig{file=figures/depart.eps,height=7cm,clip=}
+\end{center}
+\caption{Situation de d�part}
+\label{fig_1} 
+\end{figure}
+
+Il faut maintenant transformer l'arbre de d�part en tas. Ceci commence au noeud correspondant � l'indice $N/2$ du tableau. Comme le montre la figure~\ref{fig_2}, ce noeud contient la valeur 4 qui ne forme pas un tas car son fils contient une valeur plus grande 7. Il faut donc intervertir les valeurs.
+
+\begin{figure}[!h]
+\begin{center}
+\epsfig{file=figures/etape_1_1.eps,height=6cm,clip=}
+\end{center}
+\caption{Premier noeud trait�}
+\label{fig_2} 
+\end{figure}
+
+Le noeud suivant � traiter contient la valeur 12, il forme un tas car 10 et 6 sont plus petit que lui.
+
+Le noeud suivant � traiter contient la valeur 5, qui ne forme pas une tas. Il faut r�organiser le sous-arbre afin qu'il forme un tas en pla�ant $\max(5,3,8)$, c'est � dire 8, � la place de 5. Ceci est r�alis� � la figure~\ref{fig_3}. 
+
+\begin{figure}[!h]
+\begin{center}
+\epsfig{file=figures/etape_1_2.eps,height=6cm,clip=}
+\end{center}
+\caption{Second noeud trait�}
+\label{fig_3} 
+\end{figure}
+
+Le noeud suivant � traiter contient la valeur 16, il forme un tas car 12 et 7 sont plus petit que lui.
+
+Il faut maintenant traiter la racine. La valeur 1 est remplac�e par $\max(1,16,8)$, ce qui est repr�sent� � la figure~\ref{fig_4}.
+
+\begin{figure}[!h]
+\begin{center}
+\epsfig{file=figures/etape_1_2b.eps,height=6cm,clip=}
+\end{center}
+\caption{Traitement de la racine}
+\label{fig_4} 
+\end{figure}
+
+Il faut maintenant r�it�rer ce traitement jusqu'� la feuille. Ceci donne le r�sultat final de la premi�re phase pr�sent� � la figure~\ref{fig_5}.
+
+\begin{figure}[!h]
+\begin{center}
+\epsfig{file=figures/etape_1_3.eps,height=6cm,clip=}
+\end{center}
+\caption{Traitement de la racine}
+\label{fig_5} 
+\end{figure}
+
+La seconde phase consiste � enlever l'�l�ment racine de l'arbre et � le placer en fin de tableau. L'�l�ment qui se trouvait � cette place est plac� � la racine et trait� comme dans la premi�re phase. L'arbre doit toujours �tre un tas. Le traitement de la valeur 16 est pr�sent� � la figure~\ref{fig_6}.
+
+\begin{figure}[!h]
+\begin{center}
+\epsfig{file=figures/etape_2_1.eps,height=6cm,clip=}
+\end{center}
+\caption{Plus grande valeur trait�e}
+\label{fig_6} 
+\end{figure}
+
+Il faut maintenant traiter la valeur 12 de mani�re similaire sur un arbre et un tableau de dimensions $N-1$. Et ainsi de suite pour tous les �l�ments du tableau (respectivement de l'arbre. Deux �tapes sont pr�sent�es aux figures~\ref{fig_7} et~\ref{fig_8}. 
+
+\begin{figure}[!h]
+\begin{center}
+\epsfig{file=figures/etape_2_2.eps,height=6cm,clip=}
+\end{center}
+\caption{Deuxi�me valeur trait�e}
+\label{fig_7} 
+\end{figure}
+
+\begin{figure}[!h]
+\begin{center}
+\epsfig{file=figures/etape_2_3.eps,height=4cm,clip=}
+\end{center}
+\caption{Troisi�me valeur trait�e}
+\label{fig_8} 
+\end{figure}
+  
+ 
+\end{document}
diff --git a/slides/complexite.md b/slides/complexite.md
new file mode 100644
index 0000000000000000000000000000000000000000..0725e03bfecacddb11408981234793ec1d150d83
--- /dev/null
+++ b/slides/complexite.md
@@ -0,0 +1,246 @@
+# Efficacité d'un algorithmique
+
+Comment mesurer l'efficacité d'un algorithme?
+
+. . .
+
+* Mesurer le temps CPU,
+* Mesurer le temps d'accès à la mémoire,
+* Mesurer la place prise mémoire,
+
+. . .
+
+Dépendant du **matériel**, du **compilateur**, des **options de compilation**,
+etc!
+
+## Mesure du temps CPU
+
+```C
+#include <time.h>
+struct timespec tstart={0,0}, tend={0,0};
+clock_gettime(CLOCK_MONOTONIC, &tstart);
+// some computation
+clock_gettime(CLOCK_MONOTONIC, &tend);
+printf("computation about %.5f seconds\n",
+       ((double)tend.tv_sec + 1e-9*tend.tv_nsec) - 
+       ((double)tstart.tv_sec + 1e-9*tstart.tv_nsec));
+```
+
+# Programme simple: mesure du temps CPU
+
+## Preuve sur un [petit exemple](../source_codes/complexity/sum.c)
+
+```bash
+source_codes/complexity$ make bench
+RUN ONCE -O0
+the computation took about 0.00836 seconds
+RUN ONCE -O3
+the computation took about 0.00203 seconds
+RUN THOUSAND TIMES -O0
+the computation took about 0.00363 seconds
+RUN THOUSAND TIMES -O3
+the computation took about 0.00046 seconds
+```
+
+Et sur votre machine les résultats seront **différents**.
+
+. . .
+
+## Conclusion
+
+* Nécessité d'avoir une mesure indépendante du/de la
+  matériel/compilateur/façon de mesurer/météo.
+
+# Analyse de complexité algorithmique (1/N)
+
+* On analyse le **temps** pris par un algorithme en fonction de la **taille de
+  l'entrée**.
+
+## Exemple: recherche d'un élément dans une liste triée de taille N
+
+```C
+int sorted_list[N];
+bool in_list = is_present(N, sorted_list, elem);
+```
+
+* Plus `N` est grand, plus l'algorithme prend de temps sauf si...
+
+. . .
+
+* l'élément est le premier de la liste (ou à une position toujours la même).
+* ce genre de cas pathologique ne rentre pas en ligne de compte.
+
+# Analyse de complexité algorithmique (2/N)
+
+## Recherche linéaire
+
+```C
+bool is_present(int n, int tab[], int elem) {
+    for (int i = 0; i < n; ++i) {
+        if (tab[i] == elem) {
+            return true;
+        } else if (elem < tab[i]) {
+            return false;
+        }
+    }
+    return false;
+}
+```
+
+* Dans le **meilleurs des cas** il faut `1` comparaison.
+* Dans le **pire des cas** (élément absent p.ex.) il faut `n`
+  comparaisons.
+
+. . .
+
+La **complexité algorithmique** est proportionnelle à `N`: on double la taille
+du tableau $\Rightarrow$ on double le temps pris par l'algorithme.
+
+# Analyse de complexité algorithmique (3/N)
+
+## Recherche dichotomique
+
+```C
+bool is_present_binary_search(int n, int tab[], int elem) {
+    int left  = 0;
+    int right = n - 1;
+    while (left <= right) {
+        int mid = (right + left) / 2;
+        if (tab[mid] < elem) {
+            left = mid + 1;
+        } else if (tab[mid] > elem) {
+            right = mid - 1;
+        } else {
+            return true;
+        }
+    }
+    return false;
+}
+```
+
+# Analyse de complexité algorithmique (4/N)
+
+## Recherche dichotomique
+
+![Source:
+[Wikipédia](https://upload.wikimedia.org/wikipedia/commons/a/aa/Binary_search_complexity.svg)](figs/Binary_search_complexity.svg){width=80%}
+
+. . .
+
+* Dans le **meilleurs de cas** il faut `1` comparaison.
+* Dans le **pire des cas** il faut $\log_2(N)+1$ comparaisons
+
+. . .
+
+## Linéaire vs dichotomique
+
+* $N$ vs $\log_2(N)$ comparaisons logiques.
+* Pour $N=1000000$: `1000000` vs `21` comparaisons.
+
+# Notation pour la complexité
+
+## Constante de proportionnalité
+
+* Pour la recherche linéaire ou dichotomique, on a des algorithmes qui sont
+  $\sim N$ ou $\sim \log_2(N)$
+* Qu'est-ce que cela veut dire?
+
+. . .
+
+* Temps de calcul est $t=C\cdot N$ (où $C$ est le temps pris pour une
+  comparaisons sur une machine/compilateur donné)
+* La complexité ne dépend pas de $C$.
+
+## Le $\mathcal{O}$ de Leibnitz
+
+* Pour noter la complexité d'un algorithme on utilise le symbole
+$\mathcal{O}$ (ou "grand Ô de").
+* Les complexités les plus couramment rencontrées sont
+
+. . .
+
+$$
+\mathcal{O}(1),\quad \mathcal{O}(\log(N)),\quad \mathcal{O}(N),\quad
+\mathcal{O}(\log(N)\cdot N), \quad \mathcal{O}(N^2), \quad
+\mathcal{O}(N^3).
+$$
+
+. . .
+
+<https://fr.wikipedia.org/wiki/Analyse_de_la_complexit%C3%A9_des_algorithmes>
+
+# Quelques exercices (1/3)
+
+## Complexité de l'algorithme de test de primalité naïf?
+
+```C
+for (i = 2; i < sqrt(N); ++i) {
+    if (N % i == 0) {
+        return false;
+    }
+}
+return true;
+```
+
+. . .
+
+## Réponse 
+
+$$
+\mathcal{O}(\sqrt{N}).
+$$
+
+# Quelques exercices (2/3)
+
+## Complexité de trouver le minimum d'un tableau?
+
+```C
+min = MAX;
+for (i = 0; i < N; ++i) {
+    if (tab[i] < min) {
+        min = tab[i];
+    }
+}
+return min;
+```
+
+. . .
+
+## Réponse 
+
+$$
+\mathcal{O}(N).
+$$
+
+# Quelques exercices (3/3)
+
+## Complexité du tri par sélection?
+
+```C
+ind = 0
+while (ind < SIZE-1) {
+    min = find_min(tab[ind:SIZE]);
+    swap(min, tab[ind]);
+    ind += 1
+}
+```
+
+. . .
+
+## Réponse
+
+### `min = find_min`
+
+$$
+(N-1)+(N-2)+...+2+1=\sum_{i=1}^{N-1}i=N\cdot(N-1)/2=\mathcal{O}(N^2).
+$$
+
+## Finalement
+
+$$
+\mathcal{O}(N^2\mbox{ comparaisons}) + \mathcal{O}(N\mbox{
+swaps})=\mathcal{O}(N^2).
+$$
+
+
+
diff --git a/slides/figs/Binary_search_complexity.svg b/slides/figs/Binary_search_complexity.svg
new file mode 100644
index 0000000000000000000000000000000000000000..e7a1553983c3d08fb367c90eacb00e39bd9d1094
--- /dev/null
+++ b/slides/figs/Binary_search_complexity.svg
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="401.301pt" height="167.04pt" viewBox="0 0 401.301 167.04" version="1.1">
+<defs>
+<g>
+<symbol overflow="visible" id="glyph0-0">
+<path style="stroke:none;" d=""/>
+</symbol>
+<symbol overflow="visible" id="glyph0-1">
+<path style="stroke:none;" d="M 1.625 -4.5625 C 1.171875 -4.859375 1.125 -5.1875 1.125 -5.359375 C 1.125 -5.96875 1.78125 -6.390625 2.484375 -6.390625 C 3.203125 -6.390625 3.84375 -5.875 3.84375 -5.15625 C 3.84375 -4.578125 3.453125 -4.109375 2.859375 -3.765625 Z M 3.078125 -3.609375 C 3.796875 -3.984375 4.28125 -4.5 4.28125 -5.15625 C 4.28125 -6.078125 3.40625 -6.640625 2.5 -6.640625 C 1.5 -6.640625 0.6875 -5.90625 0.6875 -4.96875 C 0.6875 -4.796875 0.703125 -4.34375 1.125 -3.875 C 1.234375 -3.765625 1.609375 -3.515625 1.859375 -3.34375 C 1.28125 -3.046875 0.421875 -2.5 0.421875 -1.5 C 0.421875 -0.453125 1.4375 0.21875 2.484375 0.21875 C 3.609375 0.21875 4.5625 -0.609375 4.5625 -1.671875 C 4.5625 -2.03125 4.453125 -2.484375 4.0625 -2.90625 C 3.875 -3.109375 3.71875 -3.203125 3.078125 -3.609375 Z M 2.078125 -3.1875 L 3.3125 -2.40625 C 3.59375 -2.21875 4.0625 -1.921875 4.0625 -1.3125 C 4.0625 -0.578125 3.3125 -0.0625 2.5 -0.0625 C 1.640625 -0.0625 0.921875 -0.671875 0.921875 -1.5 C 0.921875 -2.078125 1.234375 -2.71875 2.078125 -3.1875 Z M 2.078125 -3.1875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-2">
+<path style="stroke:none;" d="M 2.9375 -1.640625 L 2.9375 -0.78125 C 2.9375 -0.421875 2.90625 -0.3125 2.171875 -0.3125 L 1.96875 -0.3125 L 1.96875 0 C 2.375 -0.03125 2.890625 -0.03125 3.3125 -0.03125 C 3.734375 -0.03125 4.25 -0.03125 4.671875 0 L 4.671875 -0.3125 L 4.453125 -0.3125 C 3.71875 -0.3125 3.703125 -0.421875 3.703125 -0.78125 L 3.703125 -1.640625 L 4.6875 -1.640625 L 4.6875 -1.953125 L 3.703125 -1.953125 L 3.703125 -6.484375 C 3.703125 -6.6875 3.703125 -6.75 3.53125 -6.75 C 3.453125 -6.75 3.421875 -6.75 3.34375 -6.625 L 0.28125 -1.953125 L 0.28125 -1.640625 Z M 2.984375 -1.953125 L 0.5625 -1.953125 L 2.984375 -5.671875 Z M 2.984375 -1.953125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-3">
+<path style="stroke:none;" d="M 1.265625 -0.765625 L 2.328125 -1.796875 C 3.875 -3.171875 4.46875 -3.703125 4.46875 -4.703125 C 4.46875 -5.84375 3.578125 -6.640625 2.359375 -6.640625 C 1.234375 -6.640625 0.5 -5.71875 0.5 -4.828125 C 0.5 -4.28125 1 -4.28125 1.03125 -4.28125 C 1.203125 -4.28125 1.546875 -4.390625 1.546875 -4.8125 C 1.546875 -5.0625 1.359375 -5.328125 1.015625 -5.328125 C 0.9375 -5.328125 0.921875 -5.328125 0.890625 -5.3125 C 1.109375 -5.96875 1.65625 -6.328125 2.234375 -6.328125 C 3.140625 -6.328125 3.5625 -5.515625 3.5625 -4.703125 C 3.5625 -3.90625 3.078125 -3.125 2.515625 -2.5 L 0.609375 -0.375 C 0.5 -0.265625 0.5 -0.234375 0.5 0 L 4.203125 0 L 4.46875 -1.734375 L 4.234375 -1.734375 C 4.171875 -1.4375 4.109375 -1 4 -0.84375 C 3.9375 -0.765625 3.28125 -0.765625 3.0625 -0.765625 Z M 1.265625 -0.765625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-4">
+<path style="stroke:none;" d="M 2.9375 -6.375 C 2.9375 -6.625 2.9375 -6.640625 2.703125 -6.640625 C 2.078125 -6 1.203125 -6 0.890625 -6 L 0.890625 -5.6875 C 1.09375 -5.6875 1.671875 -5.6875 2.1875 -5.953125 L 2.1875 -0.78125 C 2.1875 -0.421875 2.15625 -0.3125 1.265625 -0.3125 L 0.953125 -0.3125 L 0.953125 0 C 1.296875 -0.03125 2.15625 -0.03125 2.5625 -0.03125 C 2.953125 -0.03125 3.828125 -0.03125 4.171875 0 L 4.171875 -0.3125 L 3.859375 -0.3125 C 2.953125 -0.3125 2.9375 -0.421875 2.9375 -0.78125 Z M 2.9375 -6.375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-5">
+<path style="stroke:none;" d="M 2.890625 -3.515625 C 3.703125 -3.78125 4.28125 -4.46875 4.28125 -5.265625 C 4.28125 -6.078125 3.40625 -6.640625 2.453125 -6.640625 C 1.453125 -6.640625 0.6875 -6.046875 0.6875 -5.28125 C 0.6875 -4.953125 0.90625 -4.765625 1.203125 -4.765625 C 1.5 -4.765625 1.703125 -4.984375 1.703125 -5.28125 C 1.703125 -5.765625 1.234375 -5.765625 1.09375 -5.765625 C 1.390625 -6.265625 2.046875 -6.390625 2.40625 -6.390625 C 2.828125 -6.390625 3.375 -6.171875 3.375 -5.28125 C 3.375 -5.15625 3.34375 -4.578125 3.09375 -4.140625 C 2.796875 -3.65625 2.453125 -3.625 2.203125 -3.625 C 2.125 -3.609375 1.890625 -3.59375 1.8125 -3.59375 C 1.734375 -3.578125 1.671875 -3.5625 1.671875 -3.46875 C 1.671875 -3.359375 1.734375 -3.359375 1.90625 -3.359375 L 2.34375 -3.359375 C 3.15625 -3.359375 3.53125 -2.6875 3.53125 -1.703125 C 3.53125 -0.34375 2.84375 -0.0625 2.40625 -0.0625 C 1.96875 -0.0625 1.21875 -0.234375 0.875 -0.8125 C 1.21875 -0.765625 1.53125 -0.984375 1.53125 -1.359375 C 1.53125 -1.71875 1.265625 -1.921875 0.984375 -1.921875 C 0.734375 -1.921875 0.421875 -1.78125 0.421875 -1.34375 C 0.421875 -0.4375 1.34375 0.21875 2.4375 0.21875 C 3.65625 0.21875 4.5625 -0.6875 4.5625 -1.703125 C 4.5625 -2.515625 3.921875 -3.296875 2.890625 -3.515625 Z M 2.890625 -3.515625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-6">
+<path style="stroke:none;" d="M 1.3125 -3.265625 L 1.3125 -3.515625 C 1.3125 -6.03125 2.546875 -6.390625 3.0625 -6.390625 C 3.296875 -6.390625 3.71875 -6.328125 3.9375 -5.984375 C 3.78125 -5.984375 3.390625 -5.984375 3.390625 -5.546875 C 3.390625 -5.234375 3.625 -5.078125 3.84375 -5.078125 C 4 -5.078125 4.3125 -5.171875 4.3125 -5.5625 C 4.3125 -6.15625 3.875 -6.640625 3.046875 -6.640625 C 1.765625 -6.640625 0.421875 -5.359375 0.421875 -3.15625 C 0.421875 -0.484375 1.578125 0.21875 2.5 0.21875 C 3.609375 0.21875 4.5625 -0.71875 4.5625 -2.03125 C 4.5625 -3.296875 3.671875 -4.25 2.5625 -4.25 C 1.890625 -4.25 1.515625 -3.75 1.3125 -3.265625 Z M 2.5 -0.0625 C 1.875 -0.0625 1.578125 -0.65625 1.515625 -0.8125 C 1.328125 -1.28125 1.328125 -2.078125 1.328125 -2.25 C 1.328125 -3.03125 1.65625 -4.03125 2.546875 -4.03125 C 2.71875 -4.03125 3.171875 -4.03125 3.484375 -3.40625 C 3.65625 -3.046875 3.65625 -2.53125 3.65625 -2.046875 C 3.65625 -1.5625 3.65625 -1.0625 3.484375 -0.703125 C 3.1875 -0.109375 2.734375 -0.0625 2.5 -0.0625 Z M 2.5 -0.0625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-7">
+<path style="stroke:none;" d="M 4.46875 -2 C 4.46875 -3.1875 3.65625 -4.1875 2.578125 -4.1875 C 2.109375 -4.1875 1.671875 -4.03125 1.3125 -3.671875 L 1.3125 -5.625 C 1.515625 -5.5625 1.84375 -5.5 2.15625 -5.5 C 3.390625 -5.5 4.09375 -6.40625 4.09375 -6.53125 C 4.09375 -6.59375 4.0625 -6.640625 3.984375 -6.640625 C 3.984375 -6.640625 3.953125 -6.640625 3.90625 -6.609375 C 3.703125 -6.515625 3.21875 -6.3125 2.546875 -6.3125 C 2.15625 -6.3125 1.6875 -6.390625 1.21875 -6.59375 C 1.140625 -6.625 1.125 -6.625 1.109375 -6.625 C 1 -6.625 1 -6.546875 1 -6.390625 L 1 -3.4375 C 1 -3.265625 1 -3.1875 1.140625 -3.1875 C 1.21875 -3.1875 1.234375 -3.203125 1.28125 -3.265625 C 1.390625 -3.421875 1.75 -3.96875 2.5625 -3.96875 C 3.078125 -3.96875 3.328125 -3.515625 3.40625 -3.328125 C 3.5625 -2.953125 3.59375 -2.578125 3.59375 -2.078125 C 3.59375 -1.71875 3.59375 -1.125 3.34375 -0.703125 C 3.109375 -0.3125 2.734375 -0.0625 2.28125 -0.0625 C 1.5625 -0.0625 0.984375 -0.59375 0.8125 -1.171875 C 0.84375 -1.171875 0.875 -1.15625 0.984375 -1.15625 C 1.3125 -1.15625 1.484375 -1.40625 1.484375 -1.640625 C 1.484375 -1.890625 1.3125 -2.140625 0.984375 -2.140625 C 0.84375 -2.140625 0.5 -2.0625 0.5 -1.609375 C 0.5 -0.75 1.1875 0.21875 2.296875 0.21875 C 3.453125 0.21875 4.46875 -0.734375 4.46875 -2 Z M 4.46875 -2 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-8">
+<path style="stroke:none;" d="M 4.75 -6.078125 C 4.828125 -6.1875 4.828125 -6.203125 4.828125 -6.421875 L 2.40625 -6.421875 C 1.203125 -6.421875 1.171875 -6.546875 1.140625 -6.734375 L 0.890625 -6.734375 L 0.5625 -4.6875 L 0.8125 -4.6875 C 0.84375 -4.84375 0.921875 -5.46875 1.0625 -5.59375 C 1.125 -5.65625 1.90625 -5.65625 2.03125 -5.65625 L 4.09375 -5.65625 C 3.984375 -5.5 3.203125 -4.40625 2.984375 -4.078125 C 2.078125 -2.734375 1.75 -1.34375 1.75 -0.328125 C 1.75 -0.234375 1.75 0.21875 2.21875 0.21875 C 2.671875 0.21875 2.671875 -0.234375 2.671875 -0.328125 L 2.671875 -0.84375 C 2.671875 -1.390625 2.703125 -1.9375 2.78125 -2.46875 C 2.828125 -2.703125 2.953125 -3.5625 3.40625 -4.171875 Z M 4.75 -6.078125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-9">
+<path style="stroke:none;" d="M 4.578125 -3.1875 C 4.578125 -3.984375 4.53125 -4.78125 4.1875 -5.515625 C 3.734375 -6.484375 2.90625 -6.640625 2.5 -6.640625 C 1.890625 -6.640625 1.171875 -6.375 0.75 -5.453125 C 0.4375 -4.765625 0.390625 -3.984375 0.390625 -3.1875 C 0.390625 -2.4375 0.421875 -1.546875 0.84375 -0.78125 C 1.265625 0.015625 2 0.21875 2.484375 0.21875 C 3.015625 0.21875 3.78125 0.015625 4.21875 -0.9375 C 4.53125 -1.625 4.578125 -2.40625 4.578125 -3.1875 Z M 2.484375 0 C 2.09375 0 1.5 -0.25 1.328125 -1.203125 C 1.21875 -1.796875 1.21875 -2.71875 1.21875 -3.3125 C 1.21875 -3.953125 1.21875 -4.609375 1.296875 -5.140625 C 1.484375 -6.328125 2.234375 -6.421875 2.484375 -6.421875 C 2.8125 -6.421875 3.46875 -6.234375 3.65625 -5.25 C 3.765625 -4.6875 3.765625 -3.9375 3.765625 -3.3125 C 3.765625 -2.5625 3.765625 -1.890625 3.65625 -1.25 C 3.5 -0.296875 2.9375 0 2.484375 0 Z M 2.484375 0 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-10">
+<path style="stroke:none;" d="M 3.65625 -3.171875 L 3.65625 -2.84375 C 3.65625 -0.515625 2.625 -0.0625 2.046875 -0.0625 C 1.875 -0.0625 1.328125 -0.078125 1.0625 -0.421875 C 1.5 -0.421875 1.578125 -0.703125 1.578125 -0.875 C 1.578125 -1.1875 1.34375 -1.328125 1.125 -1.328125 C 0.96875 -1.328125 0.671875 -1.25 0.671875 -0.859375 C 0.671875 -0.1875 1.203125 0.21875 2.046875 0.21875 C 3.34375 0.21875 4.5625 -1.140625 4.5625 -3.28125 C 4.5625 -5.96875 3.40625 -6.640625 2.515625 -6.640625 C 1.96875 -6.640625 1.484375 -6.453125 1.0625 -6.015625 C 0.640625 -5.5625 0.421875 -5.140625 0.421875 -4.390625 C 0.421875 -3.15625 1.296875 -2.171875 2.40625 -2.171875 C 3.015625 -2.171875 3.421875 -2.59375 3.65625 -3.171875 Z M 2.421875 -2.40625 C 2.265625 -2.40625 1.796875 -2.40625 1.5 -3.03125 C 1.3125 -3.40625 1.3125 -3.890625 1.3125 -4.390625 C 1.3125 -4.921875 1.3125 -5.390625 1.53125 -5.765625 C 1.796875 -6.265625 2.171875 -6.390625 2.515625 -6.390625 C 2.984375 -6.390625 3.3125 -6.046875 3.484375 -5.609375 C 3.59375 -5.28125 3.640625 -4.65625 3.640625 -4.203125 C 3.640625 -3.375 3.296875 -2.40625 2.421875 -2.40625 Z M 2.421875 -2.40625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-11">
+<path style="stroke:none;" d="M 2.21875 -3.65625 L 2.21875 -6.09375 C 2.21875 -6.4375 2.234375 -6.5 2.703125 -6.5 L 3.9375 -6.5 C 4.90625 -6.5 5.25 -5.65625 5.25 -5.125 C 5.25 -4.484375 4.765625 -3.65625 3.65625 -3.65625 Z M 4.5625 -3.5625 C 5.53125 -3.75 6.21875 -4.390625 6.21875 -5.125 C 6.21875 -5.984375 5.296875 -6.8125 4 -6.8125 L 0.359375 -6.8125 L 0.359375 -6.5 L 0.59375 -6.5 C 1.359375 -6.5 1.390625 -6.390625 1.390625 -6.03125 L 1.390625 -0.78125 C 1.390625 -0.421875 1.359375 -0.3125 0.59375 -0.3125 L 0.359375 -0.3125 L 0.359375 0 L 4.265625 0 C 5.59375 0 6.484375 -0.890625 6.484375 -1.828125 C 6.484375 -2.6875 5.671875 -3.4375 4.5625 -3.5625 Z M 3.953125 -0.3125 L 2.703125 -0.3125 C 2.234375 -0.3125 2.21875 -0.375 2.21875 -0.703125 L 2.21875 -3.421875 L 4.09375 -3.421875 C 5.078125 -3.421875 5.5 -2.5 5.5 -1.828125 C 5.5 -1.125 4.96875 -0.3125 3.953125 -0.3125 Z M 3.953125 -0.3125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-12">
+<path style="stroke:none;" d="M 1.109375 -2.515625 C 1.171875 -4 2.015625 -4.25 2.359375 -4.25 C 3.375 -4.25 3.484375 -2.90625 3.484375 -2.515625 Z M 1.109375 -2.296875 L 3.890625 -2.296875 C 4.109375 -2.296875 4.140625 -2.296875 4.140625 -2.515625 C 4.140625 -3.5 3.59375 -4.46875 2.359375 -4.46875 C 1.203125 -4.46875 0.28125 -3.4375 0.28125 -2.1875 C 0.28125 -0.859375 1.328125 0.109375 2.46875 0.109375 C 3.6875 0.109375 4.140625 -1 4.140625 -1.1875 C 4.140625 -1.28125 4.0625 -1.3125 4 -1.3125 C 3.921875 -1.3125 3.890625 -1.25 3.875 -1.171875 C 3.53125 -0.140625 2.625 -0.140625 2.53125 -0.140625 C 2.03125 -0.140625 1.640625 -0.4375 1.40625 -0.8125 C 1.109375 -1.28125 1.109375 -1.9375 1.109375 -2.296875 Z M 1.109375 -2.296875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-13">
+<path style="stroke:none;" d="M 2.078125 -1.9375 C 2.296875 -1.890625 3.109375 -1.734375 3.109375 -1.015625 C 3.109375 -0.515625 2.765625 -0.109375 1.984375 -0.109375 C 1.140625 -0.109375 0.78125 -0.671875 0.59375 -1.53125 C 0.5625 -1.65625 0.5625 -1.6875 0.453125 -1.6875 C 0.328125 -1.6875 0.328125 -1.625 0.328125 -1.453125 L 0.328125 -0.125 C 0.328125 0.046875 0.328125 0.109375 0.4375 0.109375 C 0.484375 0.109375 0.5 0.09375 0.6875 -0.09375 C 0.703125 -0.109375 0.703125 -0.125 0.890625 -0.3125 C 1.328125 0.09375 1.78125 0.109375 1.984375 0.109375 C 3.125 0.109375 3.59375 -0.5625 3.59375 -1.28125 C 3.59375 -1.796875 3.296875 -2.109375 3.171875 -2.21875 C 2.84375 -2.546875 2.453125 -2.625 2.03125 -2.703125 C 1.46875 -2.8125 0.8125 -2.9375 0.8125 -3.515625 C 0.8125 -3.875 1.0625 -4.28125 1.921875 -4.28125 C 3.015625 -4.28125 3.078125 -3.375 3.09375 -3.078125 C 3.09375 -2.984375 3.1875 -2.984375 3.203125 -2.984375 C 3.34375 -2.984375 3.34375 -3.03125 3.34375 -3.21875 L 3.34375 -4.234375 C 3.34375 -4.390625 3.34375 -4.46875 3.234375 -4.46875 C 3.1875 -4.46875 3.15625 -4.46875 3.03125 -4.34375 C 3 -4.3125 2.90625 -4.21875 2.859375 -4.1875 C 2.484375 -4.46875 2.078125 -4.46875 1.921875 -4.46875 C 0.703125 -4.46875 0.328125 -3.796875 0.328125 -3.234375 C 0.328125 -2.890625 0.484375 -2.609375 0.75 -2.390625 C 1.078125 -2.140625 1.359375 -2.078125 2.078125 -1.9375 Z M 2.078125 -1.9375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-14">
+<path style="stroke:none;" d="M 1.71875 -3.984375 L 3.15625 -3.984375 L 3.15625 -4.296875 L 1.71875 -4.296875 L 1.71875 -6.125 L 1.46875 -6.125 C 1.46875 -5.3125 1.171875 -4.25 0.1875 -4.203125 L 0.1875 -3.984375 L 1.03125 -3.984375 L 1.03125 -1.234375 C 1.03125 -0.015625 1.96875 0.109375 2.328125 0.109375 C 3.03125 0.109375 3.3125 -0.59375 3.3125 -1.234375 L 3.3125 -1.796875 L 3.0625 -1.796875 L 3.0625 -1.25 C 3.0625 -0.515625 2.765625 -0.140625 2.390625 -0.140625 C 1.71875 -0.140625 1.71875 -1.046875 1.71875 -1.21875 Z M 1.71875 -3.984375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-15">
+<path style="stroke:none;" d="M 1.171875 -2.171875 C 1.171875 -3.796875 1.984375 -4.21875 2.515625 -4.21875 C 2.609375 -4.21875 3.234375 -4.203125 3.578125 -3.84375 C 3.171875 -3.8125 3.109375 -3.515625 3.109375 -3.390625 C 3.109375 -3.125 3.296875 -2.9375 3.5625 -2.9375 C 3.828125 -2.9375 4.03125 -3.09375 4.03125 -3.40625 C 4.03125 -4.078125 3.265625 -4.46875 2.5 -4.46875 C 1.25 -4.46875 0.34375 -3.390625 0.34375 -2.15625 C 0.34375 -0.875 1.328125 0.109375 2.484375 0.109375 C 3.8125 0.109375 4.140625 -1.09375 4.140625 -1.1875 C 4.140625 -1.28125 4.03125 -1.28125 4 -1.28125 C 3.921875 -1.28125 3.890625 -1.25 3.875 -1.1875 C 3.59375 -0.265625 2.9375 -0.140625 2.578125 -0.140625 C 2.046875 -0.140625 1.171875 -0.5625 1.171875 -2.171875 Z M 1.171875 -2.171875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-16">
+<path style="stroke:none;" d="M 3.3125 -0.75 C 3.359375 -0.359375 3.625 0.0625 4.09375 0.0625 C 4.3125 0.0625 4.921875 -0.078125 4.921875 -0.890625 L 4.921875 -1.453125 L 4.671875 -1.453125 L 4.671875 -0.890625 C 4.671875 -0.3125 4.421875 -0.25 4.3125 -0.25 C 3.984375 -0.25 3.9375 -0.703125 3.9375 -0.75 L 3.9375 -2.734375 C 3.9375 -3.15625 3.9375 -3.546875 3.578125 -3.921875 C 3.1875 -4.3125 2.6875 -4.46875 2.21875 -4.46875 C 1.390625 -4.46875 0.703125 -4 0.703125 -3.34375 C 0.703125 -3.046875 0.90625 -2.875 1.171875 -2.875 C 1.453125 -2.875 1.625 -3.078125 1.625 -3.328125 C 1.625 -3.453125 1.578125 -3.78125 1.109375 -3.78125 C 1.390625 -4.140625 1.875 -4.25 2.1875 -4.25 C 2.6875 -4.25 3.25 -3.859375 3.25 -2.96875 L 3.25 -2.609375 C 2.734375 -2.578125 2.046875 -2.546875 1.421875 -2.25 C 0.671875 -1.90625 0.421875 -1.390625 0.421875 -0.953125 C 0.421875 -0.140625 1.390625 0.109375 2.015625 0.109375 C 2.671875 0.109375 3.125 -0.296875 3.3125 -0.75 Z M 3.25 -2.390625 L 3.25 -1.390625 C 3.25 -0.453125 2.53125 -0.109375 2.078125 -0.109375 C 1.59375 -0.109375 1.1875 -0.453125 1.1875 -0.953125 C 1.1875 -1.5 1.609375 -2.328125 3.25 -2.390625 Z M 3.25 -2.390625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-17">
+<path style="stroke:none;" d="M 3.296875 2.390625 C 3.296875 2.359375 3.296875 2.34375 3.125 2.171875 C 1.890625 0.921875 1.5625 -0.96875 1.5625 -2.5 C 1.5625 -4.234375 1.9375 -5.96875 3.171875 -7.203125 C 3.296875 -7.328125 3.296875 -7.34375 3.296875 -7.375 C 3.296875 -7.453125 3.265625 -7.484375 3.203125 -7.484375 C 3.09375 -7.484375 2.203125 -6.796875 1.609375 -5.53125 C 1.109375 -4.4375 0.984375 -3.328125 0.984375 -2.5 C 0.984375 -1.71875 1.09375 -0.515625 1.640625 0.625 C 2.25 1.84375 3.09375 2.5 3.203125 2.5 C 3.265625 2.5 3.296875 2.46875 3.296875 2.390625 Z M 3.296875 2.390625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-18">
+<path style="stroke:none;" d="M 4.6875 -2.140625 C 4.6875 -3.40625 3.703125 -4.46875 2.5 -4.46875 C 1.25 -4.46875 0.28125 -3.375 0.28125 -2.140625 C 0.28125 -0.84375 1.3125 0.109375 2.484375 0.109375 C 3.6875 0.109375 4.6875 -0.875 4.6875 -2.140625 Z M 2.5 -0.140625 C 2.0625 -0.140625 1.625 -0.34375 1.359375 -0.8125 C 1.109375 -1.25 1.109375 -1.859375 1.109375 -2.21875 C 1.109375 -2.609375 1.109375 -3.140625 1.34375 -3.578125 C 1.609375 -4.03125 2.078125 -4.25 2.484375 -4.25 C 2.921875 -4.25 3.34375 -4.03125 3.609375 -3.59375 C 3.875 -3.171875 3.875 -2.59375 3.875 -2.21875 C 3.875 -1.859375 3.875 -1.3125 3.65625 -0.875 C 3.421875 -0.421875 2.984375 -0.140625 2.5 -0.140625 Z M 2.5 -0.140625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-19">
+<path style="stroke:none;" d="M 1.09375 -3.421875 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 C 0.671875 -0.015625 1.171875 -0.03125 1.453125 -0.03125 C 1.703125 -0.03125 2.21875 -0.015625 2.5625 0 L 2.5625 -0.3125 C 1.890625 -0.3125 1.78125 -0.3125 1.78125 -0.75 L 1.78125 -2.59375 C 1.78125 -3.625 2.5 -4.1875 3.125 -4.1875 C 3.765625 -4.1875 3.875 -3.65625 3.875 -3.078125 L 3.875 -0.75 C 3.875 -0.3125 3.765625 -0.3125 3.09375 -0.3125 L 3.09375 0 C 3.4375 -0.015625 3.953125 -0.03125 4.21875 -0.03125 C 4.46875 -0.03125 5 -0.015625 5.328125 0 L 5.328125 -0.3125 C 4.671875 -0.3125 4.5625 -0.3125 4.5625 -0.75 L 4.5625 -2.59375 C 4.5625 -3.625 5.265625 -4.1875 5.90625 -4.1875 C 6.53125 -4.1875 6.640625 -3.65625 6.640625 -3.078125 L 6.640625 -0.75 C 6.640625 -0.3125 6.53125 -0.3125 5.859375 -0.3125 L 5.859375 0 C 6.203125 -0.015625 6.71875 -0.03125 6.984375 -0.03125 C 7.25 -0.03125 7.765625 -0.015625 8.109375 0 L 8.109375 -0.3125 C 7.59375 -0.3125 7.34375 -0.3125 7.328125 -0.609375 L 7.328125 -2.515625 C 7.328125 -3.375 7.328125 -3.671875 7.015625 -4.03125 C 6.875 -4.203125 6.546875 -4.40625 5.96875 -4.40625 C 5.140625 -4.40625 4.6875 -3.8125 4.53125 -3.421875 C 4.390625 -4.296875 3.65625 -4.40625 3.203125 -4.40625 C 2.46875 -4.40625 2 -3.984375 1.71875 -3.359375 L 1.71875 -4.40625 L 0.3125 -4.296875 L 0.3125 -3.984375 C 1.015625 -3.984375 1.09375 -3.921875 1.09375 -3.421875 Z M 1.09375 -3.421875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-20">
+<path style="stroke:none;" d="M 1.71875 -3.75 L 1.71875 -4.40625 L 0.28125 -4.296875 L 0.28125 -3.984375 C 0.984375 -3.984375 1.0625 -3.921875 1.0625 -3.484375 L 1.0625 1.171875 C 1.0625 1.625 0.953125 1.625 0.28125 1.625 L 0.28125 1.9375 C 0.625 1.921875 1.140625 1.90625 1.390625 1.90625 C 1.671875 1.90625 2.171875 1.921875 2.515625 1.9375 L 2.515625 1.625 C 1.859375 1.625 1.75 1.625 1.75 1.171875 L 1.75 -0.59375 C 1.796875 -0.421875 2.21875 0.109375 2.96875 0.109375 C 4.15625 0.109375 5.1875 -0.875 5.1875 -2.15625 C 5.1875 -3.421875 4.234375 -4.40625 3.109375 -4.40625 C 2.328125 -4.40625 1.90625 -3.96875 1.71875 -3.75 Z M 1.75 -1.140625 L 1.75 -3.359375 C 2.03125 -3.875 2.515625 -4.15625 3.03125 -4.15625 C 3.765625 -4.15625 4.359375 -3.28125 4.359375 -2.15625 C 4.359375 -0.953125 3.671875 -0.109375 2.9375 -0.109375 C 2.53125 -0.109375 2.15625 -0.3125 1.890625 -0.71875 C 1.75 -0.921875 1.75 -0.9375 1.75 -1.140625 Z M 1.75 -1.140625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-21">
+<path style="stroke:none;" d="M 1.671875 -3.3125 L 1.671875 -4.40625 L 0.28125 -4.296875 L 0.28125 -3.984375 C 0.984375 -3.984375 1.0625 -3.921875 1.0625 -3.421875 L 1.0625 -0.75 C 1.0625 -0.3125 0.953125 -0.3125 0.28125 -0.3125 L 0.28125 0 C 0.671875 -0.015625 1.140625 -0.03125 1.421875 -0.03125 C 1.8125 -0.03125 2.28125 -0.03125 2.6875 0 L 2.6875 -0.3125 L 2.46875 -0.3125 C 1.734375 -0.3125 1.71875 -0.421875 1.71875 -0.78125 L 1.71875 -2.3125 C 1.71875 -3.296875 2.140625 -4.1875 2.890625 -4.1875 C 2.953125 -4.1875 2.984375 -4.1875 3 -4.171875 C 2.96875 -4.171875 2.765625 -4.046875 2.765625 -3.78125 C 2.765625 -3.515625 2.984375 -3.359375 3.203125 -3.359375 C 3.375 -3.359375 3.625 -3.484375 3.625 -3.796875 C 3.625 -4.109375 3.3125 -4.40625 2.890625 -4.40625 C 2.15625 -4.40625 1.796875 -3.734375 1.671875 -3.3125 Z M 1.671875 -3.3125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-22">
+<path style="stroke:none;" d="M 1.765625 -4.40625 L 0.375 -4.296875 L 0.375 -3.984375 C 1.015625 -3.984375 1.109375 -3.921875 1.109375 -3.4375 L 1.109375 -0.75 C 1.109375 -0.3125 1 -0.3125 0.328125 -0.3125 L 0.328125 0 C 0.640625 -0.015625 1.1875 -0.03125 1.421875 -0.03125 C 1.78125 -0.03125 2.125 -0.015625 2.46875 0 L 2.46875 -0.3125 C 1.796875 -0.3125 1.765625 -0.359375 1.765625 -0.75 Z M 1.796875 -6.140625 C 1.796875 -6.453125 1.5625 -6.671875 1.28125 -6.671875 C 0.96875 -6.671875 0.75 -6.40625 0.75 -6.140625 C 0.75 -5.875 0.96875 -5.609375 1.28125 -5.609375 C 1.5625 -5.609375 1.796875 -5.828125 1.796875 -6.140625 Z M 1.796875 -6.140625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-23">
+<path style="stroke:none;" d="M 1.09375 -3.421875 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 C 0.671875 -0.015625 1.171875 -0.03125 1.453125 -0.03125 C 1.703125 -0.03125 2.21875 -0.015625 2.5625 0 L 2.5625 -0.3125 C 1.890625 -0.3125 1.78125 -0.3125 1.78125 -0.75 L 1.78125 -2.59375 C 1.78125 -3.625 2.5 -4.1875 3.125 -4.1875 C 3.765625 -4.1875 3.875 -3.65625 3.875 -3.078125 L 3.875 -0.75 C 3.875 -0.3125 3.765625 -0.3125 3.09375 -0.3125 L 3.09375 0 C 3.4375 -0.015625 3.953125 -0.03125 4.21875 -0.03125 C 4.46875 -0.03125 5 -0.015625 5.328125 0 L 5.328125 -0.3125 C 4.8125 -0.3125 4.5625 -0.3125 4.5625 -0.609375 L 4.5625 -2.515625 C 4.5625 -3.375 4.5625 -3.671875 4.25 -4.03125 C 4.109375 -4.203125 3.78125 -4.40625 3.203125 -4.40625 C 2.46875 -4.40625 2 -3.984375 1.71875 -3.359375 L 1.71875 -4.40625 L 0.3125 -4.296875 L 0.3125 -3.984375 C 1.015625 -3.984375 1.09375 -3.921875 1.09375 -3.421875 Z M 1.09375 -3.421875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-24">
+<path style="stroke:none;" d="M 2.875 -2.5 C 2.875 -3.265625 2.765625 -4.46875 2.21875 -5.609375 C 1.625 -6.828125 0.765625 -7.484375 0.671875 -7.484375 C 0.609375 -7.484375 0.5625 -7.4375 0.5625 -7.375 C 0.5625 -7.34375 0.5625 -7.328125 0.75 -7.140625 C 1.734375 -6.15625 2.296875 -4.578125 2.296875 -2.5 C 2.296875 -0.78125 1.9375 0.96875 0.703125 2.21875 C 0.5625 2.34375 0.5625 2.359375 0.5625 2.390625 C 0.5625 2.453125 0.609375 2.5 0.671875 2.5 C 0.765625 2.5 1.671875 1.8125 2.25 0.546875 C 2.765625 -0.546875 2.875 -1.65625 2.875 -2.5 Z M 2.875 -2.5 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-25">
+<path style="stroke:none;" d="M 9.0625 -5.828125 C 9.234375 -6.40625 9.671875 -6.5 10.0625 -6.5 L 10.0625 -6.8125 C 9.765625 -6.78125 9.453125 -6.78125 9.15625 -6.78125 C 8.859375 -6.78125 8.21875 -6.796875 7.96875 -6.8125 L 7.96875 -6.5 C 8.640625 -6.484375 8.828125 -6.15625 8.828125 -5.96875 C 8.828125 -5.90625 8.796875 -5.828125 8.78125 -5.765625 L 7.28125 -1.171875 L 5.6875 -6.046875 C 5.6875 -6.09375 5.65625 -6.15625 5.65625 -6.203125 C 5.65625 -6.5 6.234375 -6.5 6.5 -6.5 L 6.5 -6.8125 C 6.140625 -6.78125 5.46875 -6.78125 5.078125 -6.78125 C 4.703125 -6.78125 4.28125 -6.796875 3.875 -6.8125 L 3.875 -6.5 C 4.4375 -6.5 4.640625 -6.5 4.765625 -6.140625 L 4.984375 -5.4375 L 3.59375 -1.171875 L 2 -6.078125 C 1.984375 -6.09375 1.96875 -6.171875 1.96875 -6.203125 C 1.96875 -6.5 2.546875 -6.5 2.8125 -6.5 L 2.8125 -6.8125 C 2.453125 -6.78125 1.78125 -6.78125 1.390625 -6.78125 C 1.015625 -6.78125 0.59375 -6.796875 0.171875 -6.8125 L 0.171875 -6.5 C 0.921875 -6.5 0.96875 -6.453125 1.09375 -6.078125 L 3.078125 0.03125 C 3.109375 0.125 3.140625 0.21875 3.265625 0.21875 C 3.40625 0.21875 3.421875 0.15625 3.46875 0.015625 L 5.109375 -5.046875 L 6.765625 0.03125 C 6.796875 0.125 6.828125 0.21875 6.953125 0.21875 C 7.09375 0.21875 7.125 0.15625 7.15625 0.015625 Z M 9.0625 -5.828125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-26">
+<path style="stroke:none;" d="M 1.765625 -6.921875 L 0.328125 -6.8125 L 0.328125 -6.5 C 1.03125 -6.5 1.109375 -6.4375 1.109375 -5.9375 L 1.109375 -0.75 C 1.109375 -0.3125 1 -0.3125 0.328125 -0.3125 L 0.328125 0 C 0.65625 -0.015625 1.1875 -0.03125 1.4375 -0.03125 C 1.6875 -0.03125 2.171875 -0.015625 2.546875 0 L 2.546875 -0.3125 C 1.875 -0.3125 1.765625 -0.3125 1.765625 -0.75 Z M 1.765625 -6.921875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-27">
+<path style="stroke:none;" d="M 2.21875 -1.71875 C 1.34375 -1.71875 1.34375 -2.71875 1.34375 -2.9375 C 1.34375 -3.203125 1.359375 -3.53125 1.5 -3.78125 C 1.578125 -3.890625 1.8125 -4.171875 2.21875 -4.171875 C 3.078125 -4.171875 3.078125 -3.1875 3.078125 -2.953125 C 3.078125 -2.6875 3.078125 -2.359375 2.921875 -2.109375 C 2.84375 -2 2.609375 -1.71875 2.21875 -1.71875 Z M 1.0625 -1.328125 C 1.0625 -1.359375 1.0625 -1.59375 1.21875 -1.796875 C 1.609375 -1.515625 2.03125 -1.484375 2.21875 -1.484375 C 3.140625 -1.484375 3.828125 -2.171875 3.828125 -2.9375 C 3.828125 -3.3125 3.671875 -3.671875 3.421875 -3.90625 C 3.78125 -4.25 4.140625 -4.296875 4.3125 -4.296875 C 4.34375 -4.296875 4.390625 -4.296875 4.421875 -4.28125 C 4.3125 -4.25 4.25 -4.140625 4.25 -4.015625 C 4.25 -3.84375 4.390625 -3.734375 4.546875 -3.734375 C 4.640625 -3.734375 4.828125 -3.796875 4.828125 -4.03125 C 4.828125 -4.203125 4.71875 -4.515625 4.328125 -4.515625 C 4.125 -4.515625 3.6875 -4.453125 3.265625 -4.046875 C 2.84375 -4.375 2.4375 -4.40625 2.21875 -4.40625 C 1.28125 -4.40625 0.59375 -3.71875 0.59375 -2.953125 C 0.59375 -2.515625 0.8125 -2.140625 1.0625 -1.921875 C 0.9375 -1.78125 0.75 -1.453125 0.75 -1.09375 C 0.75 -0.78125 0.890625 -0.40625 1.203125 -0.203125 C 0.59375 -0.046875 0.28125 0.390625 0.28125 0.78125 C 0.28125 1.5 1.265625 2.046875 2.484375 2.046875 C 3.65625 2.046875 4.6875 1.546875 4.6875 0.765625 C 4.6875 0.421875 4.5625 -0.09375 4.046875 -0.375 C 3.515625 -0.640625 2.9375 -0.640625 2.328125 -0.640625 C 2.078125 -0.640625 1.65625 -0.640625 1.578125 -0.65625 C 1.265625 -0.703125 1.0625 -1 1.0625 -1.328125 Z M 2.5 1.828125 C 1.484375 1.828125 0.796875 1.3125 0.796875 0.78125 C 0.796875 0.328125 1.171875 -0.046875 1.609375 -0.0625 L 2.203125 -0.0625 C 3.0625 -0.0625 4.171875 -0.0625 4.171875 0.78125 C 4.171875 1.328125 3.46875 1.828125 2.5 1.828125 Z M 2.5 1.828125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-28">
+<path style="stroke:none;" d="M 4.078125 -2.296875 L 6.859375 -2.296875 C 7 -2.296875 7.1875 -2.296875 7.1875 -2.5 C 7.1875 -2.6875 7 -2.6875 6.859375 -2.6875 L 4.078125 -2.6875 L 4.078125 -5.484375 C 4.078125 -5.625 4.078125 -5.8125 3.875 -5.8125 C 3.671875 -5.8125 3.671875 -5.625 3.671875 -5.484375 L 3.671875 -2.6875 L 0.890625 -2.6875 C 0.75 -2.6875 0.5625 -2.6875 0.5625 -2.5 C 0.5625 -2.296875 0.75 -2.296875 0.890625 -2.296875 L 3.671875 -2.296875 L 3.671875 0.5 C 3.671875 0.640625 3.671875 0.828125 3.875 0.828125 C 4.078125 0.828125 4.078125 0.640625 4.078125 0.5 Z M 4.078125 -2.296875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-0">
+<path style="stroke:none;" d=""/>
+</symbol>
+<symbol overflow="visible" id="glyph1-1">
+<path style="stroke:none;" d="M 3.84375 2.5 C 4 2.5 4.203125 2.5 4.203125 2.296875 C 4.203125 2.09375 4 2.09375 3.84375 2.09375 L 2.140625 2.09375 L 2.140625 -7.125 C 2.140625 -7.296875 2.140625 -7.484375 1.9375 -7.484375 C 1.734375 -7.484375 1.734375 -7.265625 1.734375 -7.125 L 1.734375 2.140625 C 1.734375 2.453125 1.78125 2.5 2.09375 2.5 Z M 3.84375 2.5 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-2">
+<path style="stroke:none;" d="M 2.6875 -7.125 C 2.6875 -7.296875 2.6875 -7.484375 2.484375 -7.484375 C 2.28125 -7.484375 2.28125 -7.265625 2.28125 -7.125 L 2.28125 2.09375 L 0.5625 2.09375 C 0.421875 2.09375 0.203125 2.09375 0.203125 2.296875 C 0.203125 2.5 0.421875 2.5 0.5625 2.5 L 2.328125 2.5 C 2.65625 2.5 2.6875 2.46875 2.6875 2.140625 Z M 2.6875 -7.125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-0">
+<path style="stroke:none;" d=""/>
+</symbol>
+<symbol overflow="visible" id="glyph2-1">
+<path style="stroke:none;" d="M 3.515625 -1.265625 L 3.28125 -1.265625 C 3.265625 -1.109375 3.1875 -0.703125 3.09375 -0.640625 C 3.046875 -0.59375 2.515625 -0.59375 2.40625 -0.59375 L 1.125 -0.59375 C 1.859375 -1.234375 2.109375 -1.4375 2.515625 -1.765625 C 3.03125 -2.171875 3.515625 -2.609375 3.515625 -3.265625 C 3.515625 -4.109375 2.78125 -4.625 1.890625 -4.625 C 1.03125 -4.625 0.4375 -4.015625 0.4375 -3.375 C 0.4375 -3.03125 0.734375 -2.984375 0.8125 -2.984375 C 0.96875 -2.984375 1.171875 -3.109375 1.171875 -3.359375 C 1.171875 -3.484375 1.125 -3.734375 0.765625 -3.734375 C 0.984375 -4.21875 1.453125 -4.375 1.78125 -4.375 C 2.484375 -4.375 2.84375 -3.828125 2.84375 -3.265625 C 2.84375 -2.65625 2.40625 -2.1875 2.1875 -1.9375 L 0.515625 -0.265625 C 0.4375 -0.203125 0.4375 -0.1875 0.4375 0 L 3.3125 0 Z M 3.515625 -1.265625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph3-0">
+<path style="stroke:none;" d=""/>
+</symbol>
+<symbol overflow="visible" id="glyph3-1">
+<path style="stroke:none;" d="M 0.875 -0.59375 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.078125 0.109375 C 1.203125 0.109375 1.375 0.03125 1.453125 -0.171875 C 1.453125 -0.1875 1.578125 -0.65625 1.640625 -0.90625 L 1.859375 -1.796875 C 1.90625 -2.03125 1.96875 -2.25 2.03125 -2.46875 C 2.0625 -2.640625 2.140625 -2.9375 2.15625 -2.96875 C 2.296875 -3.28125 2.828125 -4.1875 3.78125 -4.1875 C 4.234375 -4.1875 4.3125 -3.8125 4.3125 -3.484375 C 4.3125 -2.875 3.828125 -1.59375 3.671875 -1.171875 C 3.578125 -0.9375 3.5625 -0.8125 3.5625 -0.703125 C 3.5625 -0.234375 3.921875 0.109375 4.390625 0.109375 C 5.328125 0.109375 5.6875 -1.34375 5.6875 -1.421875 C 5.6875 -1.53125 5.609375 -1.53125 5.578125 -1.53125 C 5.46875 -1.53125 5.46875 -1.5 5.421875 -1.34375 C 5.21875 -0.671875 4.890625 -0.109375 4.40625 -0.109375 C 4.234375 -0.109375 4.171875 -0.203125 4.171875 -0.4375 C 4.171875 -0.6875 4.25 -0.921875 4.34375 -1.140625 C 4.53125 -1.671875 4.953125 -2.765625 4.953125 -3.34375 C 4.953125 -4 4.53125 -4.40625 3.8125 -4.40625 C 2.90625 -4.40625 2.421875 -3.765625 2.25 -3.53125 C 2.203125 -4.09375 1.796875 -4.40625 1.328125 -4.40625 C 0.875 -4.40625 0.6875 -4.015625 0.59375 -3.84375 C 0.421875 -3.5 0.296875 -2.90625 0.296875 -2.875 C 0.296875 -2.765625 0.390625 -2.765625 0.40625 -2.765625 C 0.515625 -2.765625 0.515625 -2.78125 0.578125 -3 C 0.75 -3.703125 0.953125 -4.1875 1.3125 -4.1875 C 1.5 -4.1875 1.609375 -4.0625 1.609375 -3.734375 C 1.609375 -3.515625 1.578125 -3.40625 1.453125 -2.890625 Z M 0.875 -0.59375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph4-0">
+<path style="stroke:none;" d=""/>
+</symbol>
+<symbol overflow="visible" id="glyph4-1">
+<path style="stroke:none;" d="M 2.953125 -4.203125 C 2.984375 -4.28125 3.34375 -5 3.875 -5.46875 C 4.25 -5.8125 4.734375 -6.03125 5.296875 -6.03125 C 5.859375 -6.03125 6.0625 -5.609375 6.0625 -5.03125 C 6.0625 -4.21875 5.484375 -2.578125 5.1875 -1.8125 C 5.0625 -1.46875 4.984375 -1.28125 4.984375 -1.015625 C 4.984375 -0.375 5.4375 0.140625 6.125 0.140625 C 7.453125 0.140625 7.953125 -1.96875 7.953125 -2.046875 C 7.953125 -2.125 7.90625 -2.1875 7.8125 -2.1875 C 7.6875 -2.1875 7.671875 -2.140625 7.609375 -1.890625 C 7.265625 -0.71875 6.734375 -0.140625 6.171875 -0.140625 C 6.03125 -0.140625 5.796875 -0.15625 5.796875 -0.609375 C 5.796875 -0.96875 5.953125 -1.40625 6.03125 -1.609375 C 6.328125 -2.390625 6.921875 -4 6.921875 -4.8125 C 6.921875 -5.6875 6.421875 -6.328125 5.328125 -6.328125 C 4.0625 -6.328125 3.390625 -5.421875 3.125 -5.0625 C 3.078125 -5.875 2.5 -6.328125 1.859375 -6.328125 C 1.40625 -6.328125 1.09375 -6.046875 0.84375 -5.5625 C 0.59375 -5.046875 0.390625 -4.1875 0.390625 -4.125 C 0.390625 -4.078125 0.4375 -4 0.546875 -4 C 0.65625 -4 0.671875 -4.015625 0.765625 -4.34375 C 0.984375 -5.21875 1.25 -6.03125 1.828125 -6.03125 C 2.15625 -6.03125 2.265625 -5.8125 2.265625 -5.375 C 2.265625 -5.0625 2.125 -4.5 2.015625 -4.0625 L 1.625 -2.515625 C 1.5625 -2.234375 1.40625 -1.59375 1.328125 -1.328125 C 1.234375 -0.96875 1.078125 -0.28125 1.078125 -0.21875 C 1.078125 -0.015625 1.234375 0.140625 1.453125 0.140625 C 1.625 0.140625 1.828125 0.0625 1.9375 -0.15625 C 1.96875 -0.234375 2.09375 -0.734375 2.171875 -1.015625 L 2.484375 -2.3125 Z M 2.953125 -4.203125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph5-0">
+<path style="stroke:none;" d=""/>
+</symbol>
+<symbol overflow="visible" id="glyph5-1">
+<path style="stroke:none;" d="M 9.6875 -4.640625 C 9.890625 -4.640625 10.140625 -4.640625 10.140625 -4.90625 C 10.140625 -5.171875 9.890625 -5.171875 9.6875 -5.171875 L 1.234375 -5.171875 C 1.03125 -5.171875 0.78125 -5.171875 0.78125 -4.921875 C 0.78125 -4.640625 1.015625 -4.640625 1.234375 -4.640625 Z M 9.6875 -1.984375 C 9.890625 -1.984375 10.140625 -1.984375 10.140625 -2.234375 C 10.140625 -2.515625 9.890625 -2.515625 9.6875 -2.515625 L 1.234375 -2.515625 C 1.03125 -2.515625 0.78125 -2.515625 0.78125 -2.25 C 0.78125 -1.984375 1.015625 -1.984375 1.234375 -1.984375 Z M 9.6875 -1.984375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph5-2">
+<path style="stroke:none;" d="M 4.125 -9.1875 C 4.125 -9.53125 4.125 -9.53125 3.84375 -9.53125 C 3.5 -9.15625 2.78125 -8.625 1.3125 -8.625 L 1.3125 -8.203125 C 1.640625 -8.203125 2.359375 -8.203125 3.140625 -8.578125 L 3.140625 -1.109375 C 3.140625 -0.59375 3.09375 -0.421875 1.84375 -0.421875 L 1.390625 -0.421875 L 1.390625 0 C 1.78125 -0.03125 3.171875 -0.03125 3.640625 -0.03125 C 4.109375 -0.03125 5.5 -0.03125 5.875 0 L 5.875 -0.421875 L 5.4375 -0.421875 C 4.171875 -0.421875 4.125 -0.59375 4.125 -1.109375 Z M 4.125 -9.1875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph5-3">
+<path style="stroke:none;" d="M 1.84375 -8.21875 C 2.453125 -8.015625 2.953125 -8 3.109375 -8 C 4.734375 -8 5.765625 -9.1875 5.765625 -9.390625 C 5.765625 -9.453125 5.734375 -9.53125 5.65625 -9.53125 C 5.625 -9.53125 5.59375 -9.53125 5.46875 -9.46875 C 4.65625 -9.125 3.96875 -9.078125 3.59375 -9.078125 C 2.65625 -9.078125 1.984375 -9.359375 1.703125 -9.484375 C 1.609375 -9.53125 1.578125 -9.53125 1.5625 -9.53125 C 1.453125 -9.53125 1.453125 -9.4375 1.453125 -9.203125 L 1.453125 -4.953125 C 1.453125 -4.6875 1.453125 -4.609375 1.625 -4.609375 C 1.6875 -4.609375 1.703125 -4.625 1.84375 -4.796875 C 2.25 -5.375 2.921875 -5.71875 3.640625 -5.71875 C 4.40625 -5.71875 4.78125 -5.015625 4.890625 -4.78125 C 5.140625 -4.21875 5.15625 -3.515625 5.15625 -2.96875 C 5.15625 -2.421875 5.15625 -1.609375 4.75 -0.96875 C 4.4375 -0.4375 3.875 -0.09375 3.234375 -0.09375 C 2.296875 -0.09375 1.359375 -0.734375 1.109375 -1.78125 C 1.171875 -1.75 1.265625 -1.734375 1.328125 -1.734375 C 1.578125 -1.734375 1.96875 -1.875 1.96875 -2.359375 C 1.96875 -2.765625 1.6875 -3 1.328125 -3 C 1.078125 -3 0.703125 -2.875 0.703125 -2.3125 C 0.703125 -1.09375 1.671875 0.296875 3.265625 0.296875 C 4.890625 0.296875 6.3125 -1.0625 6.3125 -2.890625 C 6.3125 -4.59375 5.15625 -6.015625 3.65625 -6.015625 C 2.84375 -6.015625 2.203125 -5.65625 1.84375 -5.25 Z M 1.84375 -8.21875 "/>
+</symbol>
+</g>
+</defs>
+<g id="surface1">
+<path style="fill-rule:nonzero;fill:rgb(89.99939%,89.99939%,100%);fill-opacity:1;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 11.34025 -0.00003125 C 11.34025 6.261687 6.262125 11.339812 0.00040625 11.339812 C -6.261313 11.339812 -11.339438 6.261687 -11.339438 -0.00003125 C -11.339438 -6.26175 -6.261313 -11.339875 0.00040625 -11.339875 C 6.262125 -11.339875 11.34025 -6.26175 11.34025 -0.00003125 Z M 11.34025 -0.00003125 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-1" x="229.95" y="20.418"/>
+</g>
+<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -73.702719 -42.519563 C -73.702719 -36.257844 -78.776938 -31.179719 -85.038656 -31.179719 C -91.304281 -31.179719 -96.3785 -36.257844 -96.3785 -42.519563 C -96.3785 -48.781281 -91.304281 -53.859406 -85.038656 -53.859406 C -78.776938 -53.859406 -73.702719 -48.781281 -73.702719 -42.519563 Z M -73.702719 -42.519563 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-2" x="144.911" y="62.937"/>
+</g>
+<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -10.319906 -5.160188 L -74.72225 -37.359406 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -116.22225 -85.039094 C -116.22225 -78.777375 -121.296469 -73.703156 -127.562094 -73.703156 C -133.823813 -73.703156 -138.898031 -78.777375 -138.898031 -85.039094 C -138.898031 -91.300813 -133.823813 -96.378938 -127.562094 -96.378938 C -121.296469 -96.378938 -116.22225 -91.300813 -116.22225 -85.039094 Z M -116.22225 -85.039094 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-3" x="102.391" y="105.457"/>
+</g>
+<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -93.198813 -50.679719 L -119.401938 -76.882844 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<path style="fill-rule:nonzero;fill:rgb(100%,89.99939%,89.99939%);fill-opacity:1;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -137.480063 -127.562531 C -137.480063 -121.296906 -142.558188 -116.222688 -148.819906 -116.222688 C -155.081625 -116.222688 -160.15975 -121.296906 -160.15975 -127.562531 C -160.15975 -133.82425 -155.081625 -138.898469 -148.819906 -138.898469 C -142.558188 -138.898469 -137.480063 -133.82425 -137.480063 -127.562531 Z M -137.480063 -127.562531 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-4" x="81.131" y="147.977"/>
+</g>
+<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -132.72225 -95.359406 L -143.65975 -117.242219 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<path style="fill-rule:nonzero;fill:rgb(100%,89.99939%,89.99939%);fill-opacity:1;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -94.960531 -127.562531 C -94.960531 -121.296906 -100.038656 -116.222688 -106.300375 -116.222688 C -112.562094 -116.222688 -117.640219 -121.296906 -117.640219 -127.562531 C -117.640219 -133.82425 -112.562094 -138.898469 -106.300375 -138.898469 C -100.038656 -138.898469 -94.960531 -133.82425 -94.960531 -127.562531 Z M -94.960531 -127.562531 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-5" x="123.651" y="147.977"/>
+</g>
+<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -122.401938 -95.359406 L -111.460531 -117.242219 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -31.183188 -85.039094 C -31.183188 -78.777375 -36.257406 -73.703156 -42.519125 -73.703156 C -48.780844 -73.703156 -53.858969 -78.777375 -53.858969 -85.039094 C -53.858969 -91.300813 -48.780844 -96.378938 -42.519125 -96.378938 C -36.257406 -96.378938 -31.183188 -91.300813 -31.183188 -85.039094 Z M -31.183188 -85.039094 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-6" x="187.43" y="105.457"/>
+</g>
+<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -76.882406 -50.679719 L -50.679281 -76.882844 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<path style="fill-rule:nonzero;fill:rgb(100%,89.99939%,89.99939%);fill-opacity:1;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -52.441 -127.562531 C -52.441 -121.296906 -57.519125 -116.222688 -63.780844 -116.222688 C -70.042563 -116.222688 -75.120688 -121.296906 -75.120688 -127.562531 C -75.120688 -133.82425 -70.042563 -138.898469 -63.780844 -138.898469 C -57.519125 -138.898469 -52.441 -133.82425 -52.441 -127.562531 Z M -52.441 -127.562531 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-7" x="166.17" y="147.977"/>
+</g>
+<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -47.679281 -95.359406 L -58.620688 -117.242219 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<path style="fill-rule:nonzero;fill:rgb(100%,89.99939%,89.99939%);fill-opacity:1;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -9.921469 -127.562531 C -9.921469 -121.296906 -14.999594 -116.222688 -21.261313 -116.222688 C -27.523031 -116.222688 -32.59725 -121.296906 -32.59725 -127.562531 C -32.59725 -133.82425 -27.523031 -138.898469 -21.261313 -138.898469 C -14.999594 -138.898469 -9.921469 -133.82425 -9.921469 -127.562531 Z M -9.921469 -127.562531 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-8" x="208.69" y="147.977"/>
+</g>
+<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -37.358969 -95.359406 L -26.421469 -117.242219 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 96.379312 -42.519563 C 96.379312 -36.257844 91.301187 -31.179719 85.039469 -31.179719 C 78.77775 -31.179719 73.703531 -36.257844 73.703531 -42.519563 C 73.703531 -48.781281 78.77775 -53.859406 85.039469 -53.859406 C 91.301187 -53.859406 96.379312 -48.781281 96.379312 -42.519563 Z M 96.379312 -42.519563 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-4" x="312.499" y="62.937"/>
+  <use xlink:href="#glyph0-3" x="317.4803" y="62.937"/>
+</g>
+<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 10.320719 -5.160188 L 74.719156 -37.359406 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 53.859781 -85.039094 C 53.859781 -78.777375 48.781656 -73.703156 42.519937 -73.703156 C 36.258219 -73.703156 31.180094 -78.777375 31.180094 -85.039094 C 31.180094 -91.300813 36.258219 -96.378938 42.519937 -96.378938 C 48.781656 -96.378938 53.859781 -91.300813 53.859781 -85.039094 Z M 53.859781 -85.039094 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-4" x="269.979" y="105.457"/>
+  <use xlink:href="#glyph0-9" x="274.9603" y="105.457"/>
+</g>
+<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 76.883219 -50.679719 L 50.680094 -76.882844 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<path style="fill-rule:nonzero;fill:rgb(100%,89.99939%,89.99939%);fill-opacity:1;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 32.598062 -127.562531 C 32.598062 -121.296906 27.523844 -116.222688 21.258219 -116.222688 C 14.9965 -116.222688 9.922281 -121.296906 9.922281 -127.562531 C 9.922281 -133.82425 14.9965 -138.898469 21.258219 -138.898469 C 27.523844 -138.898469 32.598062 -133.82425 32.598062 -127.562531 Z M 32.598062 -127.562531 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-10" x="251.21" y="147.977"/>
+</g>
+<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 37.359781 -95.359406 L 26.418375 -117.242219 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<path style="fill-rule:nonzero;fill:rgb(100%,89.99939%,89.99939%);fill-opacity:1;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 75.117594 -127.562531 C 75.117594 -121.296906 70.043375 -116.222688 63.781656 -116.222688 C 57.519937 -116.222688 52.441812 -121.296906 52.441812 -127.562531 C 52.441812 -133.82425 57.519937 -138.898469 63.781656 -138.898469 C 70.043375 -138.898469 75.117594 -133.82425 75.117594 -127.562531 Z M 75.117594 -127.562531 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-4" x="291.239" y="147.977"/>
+  <use xlink:href="#glyph0-4" x="296.2203" y="147.977"/>
+</g>
+<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 47.680094 -95.359406 L 58.6215 -117.242219 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 138.898844 -85.039094 C 138.898844 -78.777375 133.824625 -73.703156 127.559 -73.703156 C 121.297281 -73.703156 116.223062 -78.777375 116.223062 -85.039094 C 116.223062 -91.300813 121.297281 -96.378938 127.559 -96.378938 C 133.824625 -96.378938 138.898844 -91.300813 138.898844 -85.039094 Z M 138.898844 -85.039094 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-4" x="355.018" y="105.457"/>
+  <use xlink:href="#glyph0-2" x="359.9993" y="105.457"/>
+</g>
+<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 93.199625 -50.679719 L 119.40275 -76.882844 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<path style="fill-rule:nonzero;fill:rgb(100%,89.99939%,89.99939%);fill-opacity:1;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 117.641031 -127.562531 C 117.641031 -121.296906 112.562906 -116.222688 106.301187 -116.222688 C 100.039469 -116.222688 94.961344 -121.296906 94.961344 -127.562531 C 94.961344 -133.82425 100.039469 -138.898469 106.301187 -138.898469 C 112.562906 -138.898469 117.641031 -133.82425 117.641031 -127.562531 Z M 117.641031 -127.562531 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-4" x="333.759" y="147.977"/>
+  <use xlink:href="#glyph0-5" x="338.7403" y="147.977"/>
+</g>
+<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 122.40275 -95.359406 L 111.461344 -117.242219 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<path style="fill-rule:nonzero;fill:rgb(100%,89.99939%,89.99939%);fill-opacity:1;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 160.160562 -127.562531 C 160.160562 -121.296906 155.082437 -116.222688 148.820719 -116.222688 C 142.559 -116.222688 137.480875 -121.296906 137.480875 -127.562531 C 137.480875 -133.82425 142.559 -138.898469 148.820719 -138.898469 C 155.082437 -138.898469 160.160562 -133.82425 160.160562 -127.562531 Z M 160.160562 -127.562531 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-4" x="376.278" y="147.977"/>
+  <use xlink:href="#glyph0-7" x="381.2593" y="147.977"/>
+</g>
+<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 132.719156 -95.359406 L 143.660562 -117.242219 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-11" x="107.029" y="19.698"/>
+  <use xlink:href="#glyph0-12" x="114.08551" y="19.698"/>
+  <use xlink:href="#glyph0-13" x="118.512889" y="19.698"/>
+  <use xlink:href="#glyph0-14" x="122.442138" y="19.698"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-15" x="129.634139" y="19.698"/>
+  <use xlink:href="#glyph0-16" x="134.061519" y="19.698"/>
+  <use xlink:href="#glyph0-13" x="139.042819" y="19.698"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-12" x="142.982031" y="19.698"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-17" x="150.726956" y="19.698"/>
+  <use xlink:href="#glyph0-4" x="154.601411" y="19.698"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-15" x="162.900257" y="19.698"/>
+  <use xlink:href="#glyph0-18" x="167.327637" y="19.698"/>
+  <use xlink:href="#glyph0-19" x="172.308937" y="19.698"/>
+  <use xlink:href="#glyph0-20" x="180.610771" y="19.698"/>
+  <use xlink:href="#glyph0-16" x="186.145992" y="19.698"/>
+  <use xlink:href="#glyph0-21" x="191.127292" y="19.698"/>
+  <use xlink:href="#glyph0-22" x="195.029642" y="19.698"/>
+  <use xlink:href="#glyph0-13" x="197.797252" y="19.698"/>
+  <use xlink:href="#glyph0-18" x="201.726502" y="19.698"/>
+  <use xlink:href="#glyph0-23" x="206.707802" y="19.698"/>
+  <use xlink:href="#glyph0-24" x="212.243022" y="19.698"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-25" x="5.669" y="134.97"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-18" x="15.081664" y="134.97"/>
+  <use xlink:href="#glyph0-21" x="20.062964" y="134.97"/>
+  <use xlink:href="#glyph0-13" x="23.965315" y="134.97"/>
+  <use xlink:href="#glyph0-14" x="27.894564" y="134.97"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-15" x="35.086565" y="134.97"/>
+  <use xlink:href="#glyph0-16" x="39.513945" y="134.97"/>
+  <use xlink:href="#glyph0-13" x="44.495245" y="134.97"/>
+  <use xlink:href="#glyph0-12" x="48.424494" y="134.97"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-17" x="5.669" y="146.925"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="9.544" y="146.925"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-26" x="13.972" y="146.925"/>
+  <use xlink:href="#glyph0-18" x="16.73961" y="146.925"/>
+  <use xlink:href="#glyph0-27" x="21.72091" y="146.925"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph2-1" x="26.84" y="149.36"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-17" x="31.309" y="146.925"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph3-1" x="35.184" y="146.925"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-24" x="41.164" y="146.925"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-28" x="47.319891" y="146.925"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-4" x="57.360199" y="146.925"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-2" x="62.337" y="146.925"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-15" x="5.669" y="158.88"/>
+  <use xlink:href="#glyph0-18" x="10.096379" y="158.88"/>
+  <use xlink:href="#glyph0-19" x="15.077679" y="158.88"/>
+  <use xlink:href="#glyph0-20" x="23.379514" y="158.88"/>
+  <use xlink:href="#glyph0-16" x="28.914735" y="158.88"/>
+  <use xlink:href="#glyph0-21" x="33.896035" y="158.88"/>
+  <use xlink:href="#glyph0-22" x="37.798385" y="158.88"/>
+  <use xlink:href="#glyph0-13" x="40.565995" y="158.88"/>
+  <use xlink:href="#glyph0-18" x="44.495245" y="158.88"/>
+  <use xlink:href="#glyph0-23" x="49.476545" y="158.88"/>
+  <use xlink:href="#glyph0-13" x="55.011765" y="158.88"/>
+  <use xlink:href="#glyph0-24" x="58.941015" y="158.88"/>
+</g>
+<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 92.125406 -11.339875 L 162.992594 -11.339875 L 162.992594 11.339812 L 92.125406 11.339812 Z M 92.125406 -11.339875 " transform="matrix(1,0,0,-1,232.441,17.207)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph4-1" x="339.336" y="21.83"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph5-1" x="351.706" y="21.83"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph5-2" x="366.62031" y="21.83"/>
+  <use xlink:href="#glyph5-3" x="373.644209" y="21.83"/>
+</g>
+</g>
+</svg>
diff --git a/source_codes/complexity/.gitignore b/source_codes/complexity/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..549fd57861fb4e0be32e3d50caf2081e36ac50b7
--- /dev/null
+++ b/source_codes/complexity/.gitignore
@@ -0,0 +1,2 @@
+search
+sum
diff --git a/source_codes/complexity/Makefile b/source_codes/complexity/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..ad9ba7166f3c6a055140809efffc3e374fb9ab63
--- /dev/null
+++ b/source_codes/complexity/Makefile
@@ -0,0 +1,38 @@
+CC:=gcc
+# SAN:=-fsanitize=address
+CFLAGS:=-Wall -Wextra -pedantic -g $(SAN)
+LDFLAGS:=-lm $(SAN)
+
+EXECS := $(shell find . -type f -iname '*.c' | sed 's/\.c//g')
+
+all: $(EXECS)
+
+$(EXECS): %: %.c
+	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
+	@echo $@ >> .gitignore
+
+bench: sum_one sum_one_opt sum_thousand sum_thousand_opt
+	@echo "RUN ONCE -O0" && ./sum_one
+	@echo "RUN ONCE -O3" && ./sum_one_opt
+	@echo "RUN THOUSAND TIMES -O0" && ./sum_thousand
+	@echo "RUN THOUSAND TIMES -O3" && ./sum_thousand_opt
+
+
+sum_one: sum.c
+	$(CC) $(CFLAGS) -DSIZE=1000000 -DNUM_TIMES=1 -o $@ $< $(LDFLAGS) 
+
+sum_one_opt: sum.c
+	$(CC) $(CFLAGS) -O3 -DSIZE=1000000 -DNUM_TIMES=1 -o $@ $< $(LDFLAGS) 
+
+sum_thousand: sum.c
+	$(CC) $(CFLAGS) -DSIZE=1000000 -DNUM_TIMES=1000 -o $@ $< $(LDFLAGS) 
+
+sum_thousand_opt: sum.c
+	$(CC) $(CFLAGS) -O3 -DSIZE=1000000 -DNUM_TIMES=1000 -o $@ $< $(LDFLAGS) 
+
+
+.PHONY: clean all
+
+clean:
+	rm -f *.o $(EXECS) .gitignore
+
diff --git a/source_codes/complexity/search.c b/source_codes/complexity/search.c
new file mode 100644
index 0000000000000000000000000000000000000000..395cc7380b08ab5b5445f251d49fd1d38206edc1
--- /dev/null
+++ b/source_codes/complexity/search.c
@@ -0,0 +1,62 @@
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+
+#define SIZE 1000
+
+void init(int n, int tab[]) {
+    for (int i = 0; i < n; ++i) {
+        tab[i] = 3 * i;
+        printf("%d ", tab[i]);
+    }
+    printf("\n");
+}
+
+bool is_present_linear(int n, int tab[], int elem, int *steps) {
+    *steps = -1;
+    for (int i = 0; i < n; ++i) {
+        *steps = i;
+        if (tab[i] == elem) {
+            return true;
+        } else if (elem < tab[i]) {
+            return false;
+        }
+    }
+    return false;
+}
+
+bool is_present_binary_search(int n, int tab[], int elem, int *steps) {
+    *steps    = 0;
+    int left  = 0;
+    int right = n - 1;
+    while (left <= right) {
+        *steps += 1;
+        int mid = (right + left) / 2;
+        if (tab[mid] < elem) {
+            left = mid + 1;
+        } else if (tab[mid] > elem) {
+            right = mid - 1;
+        } else {
+            return true;
+        }
+    }
+    return false;
+}
+
+int main() {
+    srand(time(NULL));
+    int tab[SIZE];
+    init(SIZE, tab); // we should init randomly and sort but... I'm lazy
+    int elem        = rand() % (4 * SIZE);
+    int steps       = 0;
+    bool is_present = is_present_linear(SIZE, tab, elem, &steps);
+    printf("Condition %d is present is %s in %d steps\n", elem,
+        is_present ? "true" : "false", steps);
+    bool is_present_b = is_present_binary_search(SIZE, tab, elem, &steps);
+    printf("Condition %d is present is %s in %d steps\n", elem,
+        is_present_b ? "true" : "false", steps);
+
+    return EXIT_SUCCESS;
+}
+
diff --git a/source_codes/complexity/sum.c b/source_codes/complexity/sum.c
new file mode 100644
index 0000000000000000000000000000000000000000..4a9780aba94c6454def947222c12d2c5b88738a8
--- /dev/null
+++ b/source_codes/complexity/sum.c
@@ -0,0 +1,44 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+
+#ifndef SIZE
+#define SIZE 1000000
+#endif
+
+#ifndef NUM_TIMES
+#define NUM_TIMES 10
+#endif
+
+void init(int n, double tab[]) {
+    for (int i = 0; i < n; ++i) {
+        tab[i] = (double)rand() / (double)RAND_MAX;
+    }
+}
+
+double sum(int n, double tab[]) {
+    double s = tab[0];
+    for (int i = 1; i < n; ++i) {
+        s += tab[i] * tab[i] * tab[i] * tab[i];
+    }
+    return s;
+}
+
+int main() {
+    double tab[SIZE];
+    init(SIZE, tab);
+
+    struct timespec tstart = {0, 0}, tend = {0, 0};
+    clock_gettime(CLOCK_MONOTONIC, &tstart);
+    double s = 0;
+    for (int i = 0; i < NUM_TIMES; ++i) {
+        s += sum(SIZE, tab);
+    }
+    clock_gettime(CLOCK_MONOTONIC, &tend);
+    printf("the computation took about %.5f seconds\n",
+        (((double)tend.tv_sec + 1e-9 * tend.tv_nsec) -
+            ((double)tstart.tv_sec + 1e-9 * tstart.tv_nsec)) /
+            NUM_TIMES);
+
+    return 0;
+}