diff --git a/.DS_Store b/.DS_Store
index 14b326202101cc184c0d7cd2ce290564e14f7429..977dfb2ca3e10ade31ef08d0bf14d75b78cbd7ac 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/Projet/decoupe_image.py b/Projet/decoupe_image.py
index 5ad8fb71a6acc86fcec3701ae767d45f175df496..cf7fd97a0b6d5d1322dbf8244b265c1c1af38597 100755
--- a/Projet/decoupe_image.py
+++ b/Projet/decoupe_image.py
@@ -43,7 +43,7 @@ def decoupe_image(image: "Bloc", ordre: int) -> Bloc:
     if ordre != 0:
         blocs = en_4_blocs(image)
         for bloc in blocs:
-            decoupe_image(bloc, ordre - 1, draw)
+            decoupe_image(bloc, ordre - 1)
         
         if sont_4_blocs_uniformes_proches(blocs):
             couleur_mid = moyenne_couleur(blocs)
diff --git a/Tp08/apqueue.py b/Tp08/apqueue.py
old mode 100644
new mode 100755
index 909668a52ff5b57b848310df0c193f8622a3d222..a1343c3aaf3878cd99d521f26eb4b6e7336309e0
--- a/Tp08/apqueue.py
+++ b/Tp08/apqueue.py
@@ -95,7 +95,7 @@ class ApQueue():
         return the string representation of this queue.
         """
         return ApQueue.ARROW + \
-            "|".join(str(el) for el in self.__content[::-1]) + \
+            "|".join(str(el) for el in self.__content) + \
             ApQueue.ARROW
 
     def __len__(self) -> int:
diff --git a/Tp08/war.py b/Tp08/war.py
old mode 100644
new mode 100755
index e1acaccd3e8c30fe38cf8862e58886e2ce5459e8..fa3c4a2abac46cf552611581dc4c2683cd05c673
--- a/Tp08/war.py
+++ b/Tp08/war.py
@@ -37,7 +37,14 @@ def distribute(n_card: int) -> tuple[ApQueue, ApQueue]:
     $$$ isinstance(carte, Card)
     True
     """
-    ...
+    liste_carte = Card.deck(n_card*2)
+    h1 = ApQueue()
+    h2 = ApQueue()
+    for i in liste_carte[:n_card]:
+        h1.enqueue(i)
+    for j in liste_carte[n_card:]:
+        h2.enqueue(j)
+    return h1, h2
 
 def gather_stack(main: ApQueue, pile: ApStack) -> None:
     """
@@ -48,15 +55,14 @@ def gather_stack(main: ApQueue, pile: ApStack) -> None:
     $$$ cartes = Card.deck(4)
     $$$ main = ApQueue()
     $$$ pile = ApStack()
-    $$$ for c in cartes:
-    ...     pile.push(c)
+    $$$ for c in cartes: pile.push(c)
     $$$ gather_stack( main, pile )
     $$$ len( main ) == 4
     True
     $$$ all( main.dequeue() == cartes[ 3 - i ] for i in range(3))
     True
     """
-    ...
+    
 
 def play_one_round(m1: ApQueue, m2: ApQueue, pile: ApStack) -> None:
     """
diff --git a/projet-ayoub-buyhari/Bloc.py b/projet-ayoub-buyhari/Bloc.py
new file mode 100644
index 0000000000000000000000000000000000000000..709ff3a7cf63f76bb5d664bb7da9cfe22aee6aa0
--- /dev/null
+++ b/projet-ayoub-buyhari/Bloc.py
@@ -0,0 +1,23 @@
+#Buhyari Ayoub
+#classe bloc pour manipuler et structurer l'image
+class Bloc:
+    """Paramètres :
+   Initialise un bloc qui represente une partie de l'image
+   argument:
+        - px_hg = pixel haut gauche
+        - px_bd = pixel bas droit
+        - couleur = tuple de 3 valeur : r,v et b 
+    """
+    def __init__(self,px_hg,px_bd,couleur):
+        """ Initialise un bloc avec ses coins supérieur gauche et inférieur droit et sa couleur.
+        """
+        self.px_hg = px_hg
+        self.px_bd = px_bd
+        self.couleur = couleur
+        self.size = (int(px_bd[0] - px_hg[0]), int(px_bd[1] - px_hg[1]))
+    
+    def __str__(self):
+        return f"Bloc({self.px_hg},{self.px_bd},{self.couleur})"
+    
+    def __repr__(self):
+        return f"Bloc({self.px_hg},{self.px_bd},{self.couleur})"
diff --git a/projet-ayoub-buyhari/Decoupage.py b/projet-ayoub-buyhari/Decoupage.py
new file mode 100644
index 0000000000000000000000000000000000000000..fc4504479818b4fb14328d3eb56f4d4366379681
--- /dev/null
+++ b/projet-ayoub-buyhari/Decoupage.py
@@ -0,0 +1,144 @@
+#BUHYARI Ayoub
+#Partie decoupage
+from Bloc import Bloc
+from PIL import Image , ImageDraw
+from algo_rec import *
+from PIL import *
+
+def couleur_proche(liste_bloc:list[Bloc] , seuil=20):
+    """
+si les 4 blocs sont de couleur proche renvoie True , Flase sinon
+precondition: 4 elements blocs dans liste_bloc avec chacun une couleur
+""" 
+    for i in range(3):
+        couleur1 = liste_bloc[i].couleur
+        couleur2 = liste_bloc[i+1].couleur
+        max_diff = max(abs(couleur1[j] - couleur2[j]) for j in range(3))
+        if max_diff > seuil:
+            return False
+    return True
+
+        
+def fusion_4_bloc(liste_bloc:list[Bloc]):
+    """
+fusionne 4 bloc pour en former un seul
+precondition: len(liste_bloc) == 4
+"""
+    somme_r = 0
+    somme_v = 0
+    somme_b = 0
+    px_bd_x = max(liste_bloc[0].px_bd[0],liste_bloc[1].px_bd[0],liste_bloc[2].px_bd[0],liste_bloc[3].px_bd[0])
+    px_bd_y = max(liste_bloc[0].px_bd[1],liste_bloc[1].px_bd[1],liste_bloc[2].px_bd[1],liste_bloc[3].px_bd[1])
+    px_hg_x= min(liste_bloc[0].px_hg[0],liste_bloc[1].px_hg[0],liste_bloc[2].px_hg[0],liste_bloc[3].px_hg[0])
+    px_hg_y = min(liste_bloc[0].px_hg[1],liste_bloc[1].px_hg[1],liste_bloc[2].px_hg[1],liste_bloc[3].px_hg[1])
+    for bloc in liste_bloc:
+        r,v,b = bloc.couleur
+        somme_r = somme_r + r
+        somme_v = somme_v + v
+        somme_b = somme_b + b
+    return Bloc((px_hg_x,px_hg_y),(px_bd_x,px_bd_y),(somme_r/4,somme_b/4,somme_b/4))
+
+def couleur_moyenne_image(image:Image):
+    """
+Calcule la couleur moyenne dune image pour l'ordre 0
+precondition: aucune
+"""
+    im_rgb = Image.open(image).convert("RGB") 
+    largeur, hauteur = im_rgb.size
+    total_r = total_g = total_b = 0
+
+    for y in range(hauteur):
+        for x in range(largeur):
+            couleur_pixel = im_rgb.getpixel((x, y))
+            total_r += couleur_pixel[0]
+            total_g += couleur_pixel[1]
+            total_b += couleur_pixel[2]
+
+    nb_pixels = largeur * hauteur
+    couleur_moy_r = total_r // nb_pixels
+    couleur_moy_g = total_g // nb_pixels
+    couleur_moy_b = total_b // nb_pixels
+
+    return (couleur_moy_r, couleur_moy_g, couleur_moy_b)
+
+def image_to_block(image_path):
+    image = Image.open(image_path).convert("RGB")
+    largeur, hauteur = image.size
+    return Bloc((0, 0), (largeur, hauteur), (None, None, None))
+
+def divise_bloc(image_path: str, bloc: Bloc, ordre: int):
+    """
+    Divise l'image en 4 sous-blocs et le fait récursivement jusqu'à ce que l'ordre soit atteint.
+    """
+    sous_blocs = []
+
+    if ordre == 1:
+        px_hg, px_bd = bloc.px_hg, bloc.px_bd
+        largeur = px_bd[0] - px_hg[0]
+        hauteur = px_bd[1] - px_hg[1]
+        demi_largeur = largeur // 2
+        demi_hauteur = hauteur // 2
+
+        sous_blocs.append(Bloc(px_hg, (px_hg[0] + demi_largeur, px_hg[1] + demi_hauteur), (None, None, None)))  
+        sous_blocs.append(Bloc((px_hg[0] + demi_largeur, px_hg[1]), (px_bd[0], px_hg[1] + demi_hauteur), (None, None, None)))  
+        sous_blocs.append(Bloc((px_hg[0], px_hg[1] + demi_hauteur), (px_hg[0] + demi_largeur, px_bd[1]), (None, None, None)))  
+        sous_blocs.append(Bloc((px_hg[0] + demi_largeur, px_hg[1] + demi_hauteur), px_bd, (None, None, None)))  
+
+    else:
+        demi_largeur = (bloc.px_bd[0] - bloc.px_hg[0]) // 2
+        demi_hauteur = (bloc.px_bd[1] - bloc.px_hg[1]) // 2
+
+        sous_blocs += divise_bloc(image_path, Bloc(bloc.px_hg, (bloc.px_hg[0] + demi_largeur, bloc.px_hg[1] + demi_hauteur), (None, None, None)), ordre - 1)
+        sous_blocs += divise_bloc(image_path, Bloc((bloc.px_hg[0] + demi_largeur, bloc.px_hg[1]), (bloc.px_bd[0], bloc.px_hg[1] + demi_hauteur), (None, None, None)), ordre - 1)
+        sous_blocs += divise_bloc(image_path, Bloc((bloc.px_hg[0], bloc.px_hg[1] + demi_hauteur), (bloc.px_hg[0] + demi_largeur, bloc.px_bd[1]), (None, None, None)), ordre - 1)
+        sous_blocs += divise_bloc(image_path, Bloc((bloc.px_hg[0] + demi_largeur, bloc.px_hg[1] + demi_hauteur), bloc.px_bd, (None, None, None)), ordre - 1)
+        
+    for bloc in sous_blocs:
+        bloc.couleur = couleur_moyenne_bloc(image_path, bloc)
+    
+    return sous_blocs
+    
+def afficher_liste_blocs(liste_blocs:list[Bloc]):
+    """
+    convertie une liste de bloc en une image
+    precondition: liste_blocs non vide
+    """
+
+    max_x = max(bloc.px_bd[0] for bloc in liste_blocs)
+    max_y = max(bloc.px_bd[1] for bloc in liste_blocs)
+
+
+    image = Image.new("RGB", (max_x + 1, max_y + 1), "white")
+
+  
+    draw = ImageDraw.Draw(image)
+    for bloc in liste_blocs:
+        draw.rectangle([bloc.px_hg, bloc.px_bd], fill=bloc.couleur)
+
+    image.show()
+    
+
+def couleur_moyenne_bloc(image:Image, bloc:Bloc):
+    """
+calcule la couleur moyenne dune bloc
+precondition: 
+"""
+    im = Image.open(image)
+    im_rgb = im.convert("RGB")
+
+    total_r = 0
+    total_g = 0
+    total_b = 0
+    for y in range(bloc.px_hg[1], bloc.px_bd[1]):
+        for x in range(bloc.px_hg[0], bloc.px_bd[0]):
+            couleur_pixel = im_rgb.getpixel((x, y))
+            total_r += couleur_pixel[0]
+            total_g += couleur_pixel[1]
+            total_b += couleur_pixel[2]
+
+    nb_pixels = (bloc.px_bd[0] - bloc.px_hg[0]) * (bloc.px_bd[1] - bloc.px_hg[1])
+    couleur_r = total_r // nb_pixels
+    couleur_g = total_g // nb_pixels
+    couleur_b = total_b // nb_pixels
+
+    return (couleur_r, couleur_g, couleur_b)
diff --git a/projet-ayoub-buyhari/Exemple_et_commande.txt b/projet-ayoub-buyhari/Exemple_et_commande.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3a51685f13f0d425bb2fc2c749aceab3bf36472b
--- /dev/null
+++ b/projet-ayoub-buyhari/Exemple_et_commande.txt
@@ -0,0 +1,37 @@
+(1) commande 1  : python image_rec.py ./Images/fichier.png ordre nouvelle_image enregistre-png
+
+parametre: image , ordre , nouvelle_image enregistre-png
+
+description:
+enregistre une image png apres lui avoir appliquer l'algo recurcive
+
+Exemple: python image_rec.py ./Images/calbuth.png 3 calbuth_ordre_3 enregistre-png
+
+(2) commande 2 :python image_rec.py image ordre nouveau_fichier_csv  enregistre-csv
+
+parametre: image , ordre , nouvelle_image enregistre-csv
+
+Description:
+enregistre une image png dans un document csv
+
+Exemple: python image_rec.py ./Images/calbuth.png 3 csv_calbuth_3 enregistre-csv
+
+(3) commande 3 : python image_rec.py chemin_vers_image ordre affiche-png
+parametre  : chemin vers image , ordre affiche-png
+
+Description
+affiche un document png decoupait selon lordre apres avoir appliquer l'algo_rec
+
+Exemple: python image_rec.py ./Images/joconde.png 3 affiche-png
+
+affiche la joconde a l'ordre 3
+
+(4) commande 4 : python image_rec.py document_csv affiche-csv
+
+parametre : chemin vers fichier csv
+
+Description:
+affiche un document csv
+
+Exemple : python image_rec.py ./Images/mystere.csv affiche-csv
+affiche le document mystere
diff --git a/projet-ayoub-buyhari/Images/calbuth.png b/projet-ayoub-buyhari/Images/calbuth.png
new file mode 100644
index 0000000000000000000000000000000000000000..52cddb60956a9906dfa71ed6d0f4b3065c803e32
Binary files /dev/null and b/projet-ayoub-buyhari/Images/calbuth.png differ
diff --git a/projet-ayoub-buyhari/Images/galets.png b/projet-ayoub-buyhari/Images/galets.png
new file mode 100644
index 0000000000000000000000000000000000000000..7a4a51cdac50b33fade433f4231449ab50e44bc9
Binary files /dev/null and b/projet-ayoub-buyhari/Images/galets.png differ
diff --git a/projet-ayoub-buyhari/Images/joconde.png b/projet-ayoub-buyhari/Images/joconde.png
new file mode 100644
index 0000000000000000000000000000000000000000..c3dd64088bb753fa97b4e99195a3eb739d783b48
Binary files /dev/null and b/projet-ayoub-buyhari/Images/joconde.png differ
diff --git a/projet-ayoub-buyhari/Images/mystere.csv b/projet-ayoub-buyhari/Images/mystere.csv
new file mode 100644
index 0000000000000000000000000000000000000000..2f533e07dbaf516509216b30b66543ebcf114e12
--- /dev/null
+++ b/projet-ayoub-buyhari/Images/mystere.csv
@@ -0,0 +1,1975 @@
+0,0,128,128,255,255,255
+128,0,192,64,255,255,255
+192,0,256,64,255,255,255
+128,64,160,96,255,255,255
+160,64,192,96,255,255,255
+128,96,160,128,255,255,255
+160,96,192,128,246,246,246
+3,4,5,6
+192,64,224,96,255,255,255
+224,64,256,96,249,253,249
+192,96,224,128,204,235,201
+224,96,256,128,63,217,44
+8,9,10,11
+1,2,7,12
+0,128,32,160,255,255,255
+32,128,64,160,204,204,204
+0,160,32,192,255,255,255
+32,160,64,192,149,149,149
+14,15,16,17
+64,128,96,160,116,116,116
+96,128,128,160,255,255,255
+64,160,96,192,167,167,167
+96,160,128,192,236,236,236
+19,20,21,22
+0,192,32,224,247,247,247
+32,192,64,224,115,115,115
+0,224,32,256,242,242,242
+32,224,64,256,191,186,229
+24,25,26,27
+64,192,96,224,164,164,164
+96,192,128,224,158,158,158
+64,224,96,256,186,178,241
+96,224,128,256,158,150,213
+29,30,31,32
+18,23,28,33
+128,128,160,160,255,255,255
+160,128,192,160,125,133,124
+128,160,160,192,255,255,255
+160,160,192,192,111,129,109
+35,36,37,38
+192,128,224,160,22,141,8
+224,128,256,160,18,124,5
+192,160,224,192,19,130,6
+224,160,256,192,20,137,6
+40,41,42,43
+128,192,160,224,229,229,229
+160,192,192,224,78,130,72
+128,224,160,256,160,152,215
+160,224,192,256,79,171,91
+45,46,47,48
+192,192,256,256,32,212,10
+39,44,49,50
+0,13,34,51
+256,0,320,64,255,255,255
+320,0,384,64,255,255,255
+256,64,288,96,179,240,172
+288,64,320,96,126,229,113
+256,96,288,128,32,212,10
+288,96,320,128,32,212,10
+55,56,57,58
+320,64,352,96,111,227,97
+352,64,384,96,134,231,122
+320,96,352,128,32,212,10
+352,96,384,128,32,212,10
+60,61,62,63
+53,54,59,64
+384,0,448,64,255,255,255
+448,0,512,64,255,255,255
+384,64,416,96,197,243,191
+416,64,448,96,254,254,254
+384,96,416,128,32,212,10
+416,96,448,128,88,222,71
+68,69,70,71
+448,64,480,96,255,255,255
+480,64,512,96,255,255,255
+448,96,480,128,235,251,233
+480,96,512,128,255,255,255
+73,74,75,76
+66,67,72,77
+256,128,320,192,32,212,10
+320,128,384,192,32,212,10
+256,192,288,224,28,190,8
+288,192,320,224,32,212,10
+256,224,288,256,28,190,8
+288,224,320,256,32,212,10
+81,82,83,84
+320,192,384,256,32,212,10
+79,80,85,86
+384,128,448,192,32,212,10
+448,128,480,160,78,220,61
+480,128,512,160,251,254,251
+448,160,480,192,32,212,10
+480,160,512,192,184,241,177
+89,90,91,92
+384,192,448,256,32,212,10
+448,192,480,224,32,212,10
+480,192,512,224,141,232,130
+448,224,480,256,32,212,10
+480,224,512,256,160,236,151
+95,96,97,98
+88,93,94,99
+65,78,87,100
+0,256,32,288,255,255,255
+32,256,64,288,103,86,225
+0,288,32,320,255,255,255
+32,288,64,320,84,76,138
+102,103,104,105
+64,256,96,288,35,10,212
+96,256,128,288,35,10,212
+64,288,96,320,20,5,124
+96,288,128,320,30,8,187
+107,108,109,110
+0,320,32,352,255,255,255
+32,320,64,352,42,34,104
+0,352,32,384,236,236,236
+32,352,64,384,19,7,107
+112,113,114,115
+64,320,96,352,16,4,104
+96,320,128,352,31,8,191
+64,352,96,384,18,5,114
+96,352,128,384,25,7,153
+117,118,119,120
+106,111,116,121
+128,256,160,288,35,10,212
+160,256,192,288,39,68,160
+128,288,160,320,31,9,192
+160,288,192,320,32,9,197
+123,124,125,126
+192,256,224,288,32,212,10
+224,256,256,288,32,212,10
+192,288,224,320,34,114,81
+224,288,256,320,31,206,9
+128,129,130,131
+128,320,160,352,19,5,117
+160,320,192,352,28,8,174
+128,352,160,384,31,8,191
+160,352,192,384,19,5,121
+133,134,135,136
+192,320,224,352,18,5,113
+224,320,256,352,26,54,97
+192,352,224,384,20,5,127
+224,352,256,384,29,8,179
+138,139,140,141
+127,132,137,142
+0,384,32,416,252,252,252
+32,384,64,416,97,81,211
+0,416,32,448,255,255,255
+32,416,64,448,103,86,225
+144,145,146,147
+64,384,128,448,34,9,210
+0,448,32,480,255,255,255
+32,448,64,480,141,128,232
+0,480,32,512,255,255,255
+32,480,64,512,255,255,255
+150,151,152,153
+64,448,96,480,90,71,222
+96,448,128,480,90,71,222
+64,480,96,512,255,255,255
+96,480,128,512,255,255,255
+155,156,157,158
+148,149,154,159
+128,384,160,416,34,9,211
+160,384,192,416,33,9,203
+128,416,160,448,35,10,212
+160,416,192,448,35,10,212
+161,162,163,164
+192,384,224,416,33,9,201
+224,384,256,416,34,9,211
+192,416,224,448,35,10,212
+224,416,256,448,35,10,212
+166,167,168,169
+128,448,160,480,90,71,222
+160,448,192,480,90,71,222
+128,480,160,512,255,255,255
+160,480,192,512,255,255,255
+171,172,173,174
+192,448,224,480,90,71,222
+224,448,256,480,90,71,222
+192,480,224,512,255,255,255
+224,480,256,512,255,255,255
+176,177,178,179
+165,170,175,180
+122,143,160,181
+256,256,288,288,32,212,10
+288,256,320,288,32,212,10
+256,288,288,320,31,205,9
+288,288,320,320,30,202,9
+183,184,185,186
+320,256,352,288,32,212,10
+352,256,384,288,32,212,10
+320,288,352,320,31,208,9
+352,288,384,320,27,184,8
+188,189,190,191
+256,320,288,352,25,118,36
+288,320,320,352,23,135,10
+256,352,288,384,13,3,86
+288,352,320,384,216,214,228
+193,194,195,196
+320,320,352,352,19,130,6
+352,320,384,352,34,147,20
+320,352,352,384,143,144,143
+352,352,384,384,154,154,154
+198,199,200,201
+187,192,197,202
+384,256,416,288,32,212,10
+416,256,448,288,32,212,10
+384,288,416,320,32,212,10
+416,288,448,320,39,213,18
+204,205,206,207
+448,256,480,288,43,214,22
+480,256,512,288,234,250,232
+448,288,480,320,105,159,99
+480,288,512,320,255,255,255
+209,210,211,212
+384,320,416,352,98,192,87
+416,320,448,352,219,248,216
+384,352,416,384,241,241,241
+416,352,448,384,254,254,254
+214,215,216,217
+448,320,480,352,161,161,161
+480,320,512,352,255,255,255
+448,352,480,384,202,202,202
+480,352,512,384,255,255,255
+219,220,221,222
+208,213,218,223
+256,384,288,416,33,9,205
+288,384,320,416,227,224,249
+256,416,288,448,35,10,212
+288,416,320,448,227,224,249
+225,226,227,228
+320,384,352,416,244,244,244
+352,384,384,416,245,245,245
+320,416,352,448,255,255,255
+352,416,384,448,255,255,255
+230,231,232,233
+256,448,288,480,90,71,222
+288,448,320,480,234,232,250
+256,480,288,512,255,255,255
+288,480,320,512,255,255,255
+235,236,237,238
+320,448,384,512,255,255,255
+229,234,239,240
+384,384,512,512,254,254,254
+203,224,241,242
+52,101,182,243
+>>>
+0,0,128,128,255,255,255
+128,0,192,64,255,255,255
+192,0,256,64,255,255,255
+128,64,160,96,255,255,255
+160,64,192,96,255,255,255
+128,96,160,128,255,255,255
+160,96,176,112,255,255,255
+176,96,192,112,255,255,255
+160,112,168,120,255,255,255
+168,112,176,120,255,255,255
+160,120,168,128,255,255,255
+168,120,176,128,247,247,247
+8,9,10,11
+176,112,184,120,255,255,255
+184,112,192,120,255,255,255
+176,120,184,128,191,191,191
+184,120,192,128,191,191,191
+13,14,15,16
+6,7,12,17
+3,4,5,18
+192,64,224,96,255,255,255
+224,64,240,80,255,255,255
+240,64,256,80,255,255,255
+224,80,240,96,255,255,255
+240,80,248,88,255,255,255
+248,80,256,88,255,255,255
+240,88,248,96,251,253,251
+248,88,256,96,171,237,164
+24,25,26,27
+21,22,23,28
+192,96,208,112,255,255,255
+208,96,216,104,255,255,255
+216,96,224,104,255,255,255
+208,104,216,112,255,255,255
+216,104,224,112,243,252,242
+31,32,33,34
+192,112,200,120,255,255,255
+200,112,208,120,255,255,255
+192,120,200,128,191,191,191
+200,120,208,128,179,188,179
+36,37,38,39
+208,112,216,120,225,248,223
+216,112,224,120,67,218,50
+208,120,216,128,47,174,33
+216,120,224,128,29,196,9
+41,42,43,44
+30,35,40,45
+224,96,232,104,255,255,255
+232,96,240,104,190,241,184
+224,104,232,112,113,226,100
+232,104,240,112,32,212,10
+47,48,49,50
+240,96,248,104,65,217,47
+248,96,256,104,32,212,10
+240,104,248,112,32,212,10
+248,104,256,112,32,212,10
+52,53,54,55
+224,112,240,128,32,212,10
+240,112,256,128,32,212,10
+51,56,57,58
+20,29,46,59
+1,2,19,60
+0,128,32,160,255,255,255
+32,128,48,144,255,255,255
+48,128,56,136,255,255,255
+56,128,64,136,199,199,199
+48,136,56,144,255,255,255
+56,136,64,144,102,102,102
+64,65,66,67
+32,144,48,160,255,255,255
+48,144,56,152,245,245,245
+56,144,64,152,15,15,15
+48,152,56,160,163,163,163
+56,152,64,160,0,0,0
+70,71,72,73
+63,68,69,74
+0,160,32,192,255,255,255
+32,160,40,168,255,255,255
+40,160,48,168,255,255,255
+32,168,40,176,255,255,255
+40,168,48,176,222,222,222
+77,78,79,80
+48,160,56,168,66,66,66
+56,160,64,168,27,27,27
+48,168,56,176,1,1,1
+56,168,64,176,118,118,118
+82,83,84,85
+32,176,40,184,255,255,255
+40,176,48,184,127,127,127
+32,184,40,192,253,253,253
+40,184,48,192,32,32,32
+87,88,89,90
+48,176,56,184,0,0,0
+56,176,64,184,211,211,211
+48,184,56,192,49,49,49
+56,184,64,192,254,254,254
+92,93,94,95
+81,86,91,96
+62,75,76,97
+64,128,72,136,0,0,0
+72,128,80,136,3,3,3
+64,136,72,144,7,7,7
+72,136,80,144,1,1,1
+99,100,101,102
+80,128,88,136,226,226,226
+88,128,96,136,255,255,255
+80,136,88,144,133,133,133
+88,136,96,144,255,255,255
+104,105,106,107
+64,144,72,152,93,93,93
+72,144,80,152,61,61,61
+64,152,72,160,186,186,186
+72,152,80,160,155,155,155
+109,110,111,112
+80,144,88,152,37,37,37
+88,144,96,152,254,254,254
+80,152,88,160,0,0,0
+88,152,96,160,194,194,194
+114,115,116,117
+103,108,113,118
+96,128,128,160,255,255,255
+64,160,72,168,252,252,252
+72,160,80,168,240,240,240
+64,168,72,176,255,255,255
+72,168,80,176,255,255,255
+121,122,123,124
+80,160,88,168,8,8,8
+88,160,96,168,97,97,97
+80,168,88,176,87,87,87
+88,168,96,176,12,12,12
+126,127,128,129
+64,176,80,192,255,255,255
+80,176,88,184,180,180,180
+88,176,96,184,0,0,0
+80,184,88,192,251,251,251
+88,184,96,192,23,23,23
+132,133,134,135
+125,130,131,136
+96,160,104,168,255,255,255
+104,160,112,168,255,255,255
+96,168,104,176,242,242,242
+104,168,112,176,255,255,255
+138,139,140,141
+112,160,128,176,255,255,255
+96,176,104,184,158,158,158
+104,176,112,184,255,255,255
+96,184,104,192,61,61,61
+104,184,112,192,255,255,255
+144,145,146,147
+112,176,128,192,255,255,255
+142,143,148,149
+119,120,137,150
+0,192,16,208,255,255,255
+16,192,32,208,255,255,255
+0,208,16,224,255,255,255
+16,208,24,216,255,255,255
+24,208,32,216,240,240,240
+16,216,24,224,255,255,255
+24,216,32,224,152,152,152
+155,156,157,158
+152,153,154,159
+32,192,40,200,188,188,188
+40,192,48,200,0,0,0
+32,200,40,208,91,91,91
+40,200,48,208,6,6,6
+161,162,163,164
+48,192,56,200,27,27,27
+56,192,64,200,63,63,63
+48,200,56,208,95,95,95
+56,200,64,208,95,95,95
+166,167,168,169
+32,208,40,216,9,9,9
+40,208,48,216,77,77,77
+32,216,40,224,0,0,0
+40,216,48,224,166,166,166
+171,172,173,174
+48,208,64,224,255,255,255
+165,170,175,176
+0,224,16,240,255,255,255
+16,224,24,232,255,255,255
+24,224,32,232,55,55,55
+16,232,24,240,255,255,255
+24,232,32,240,255,255,255
+179,180,181,182
+0,240,16,256,255,255,255
+16,240,32,256,255,255,255
+178,183,184,185
+32,224,40,232,11,11,11
+40,224,48,232,244,244,244
+32,232,40,240,255,255,255
+40,232,48,240,255,255,255
+187,188,189,190
+48,224,64,240,255,255,255
+32,240,40,248,255,255,255
+40,240,48,248,213,209,246
+32,248,40,256,255,255,255
+40,248,48,256,90,71,222
+193,194,195,196
+48,240,56,248,200,193,244
+56,240,64,248,200,193,244
+48,248,56,256,35,10,212
+56,248,64,256,35,10,212
+198,199,200,201
+191,192,197,202
+160,177,186,203
+64,192,72,200,63,63,63
+72,192,80,200,63,63,63
+64,200,72,208,95,95,95
+72,200,80,208,95,95,95
+205,206,207,208
+80,192,88,200,63,63,63
+88,192,96,200,19,19,19
+80,200,88,208,95,95,95
+88,200,96,208,91,91,91
+210,211,212,213
+64,208,80,224,255,255,255
+80,208,96,224,255,255,255
+209,214,215,216
+96,192,104,200,1,1,1
+104,192,112,200,218,218,218
+96,200,104,208,0,0,0
+104,200,112,208,122,122,122
+218,219,220,221
+112,192,128,208,255,255,255
+96,208,104,216,52,52,52
+104,208,112,216,28,28,28
+96,216,104,224,141,141,141
+104,216,112,224,0,0,0
+224,225,226,227
+112,208,120,216,252,252,252
+120,208,128,216,255,255,255
+112,216,120,224,184,184,184
+120,216,128,224,255,255,255
+229,230,231,232
+222,223,228,233
+64,224,80,240,255,255,255
+80,224,96,240,255,255,255
+64,240,72,248,200,193,244
+72,240,80,248,200,193,244
+64,248,72,256,35,10,212
+72,248,80,256,35,10,212
+237,238,239,240
+80,240,88,248,200,193,244
+88,240,96,248,200,193,244
+80,248,88,256,35,10,212
+88,248,96,256,35,10,212
+242,243,244,245
+235,236,241,246
+96,224,104,232,227,227,227
+104,224,112,232,2,2,2
+96,232,104,240,255,255,255
+104,232,112,240,255,255,255
+248,249,250,251
+112,224,120,232,87,87,87
+120,224,128,232,255,255,255
+112,232,120,240,255,255,255
+120,232,128,240,255,255,255
+253,254,255,256
+96,240,104,248,200,193,244
+104,240,112,248,200,193,244
+96,248,104,256,35,10,212
+104,248,112,256,35,10,212
+258,259,260,261
+112,240,120,248,200,193,244
+120,240,128,248,200,193,244
+112,248,120,256,35,10,212
+120,248,128,256,35,10,212
+263,264,265,266
+252,257,262,267
+217,234,247,268
+98,151,204,269
+128,128,160,160,255,255,255
+160,128,168,136,255,255,255
+168,128,176,136,223,223,223
+160,136,168,144,255,255,255
+168,136,176,144,223,223,223
+272,273,274,275
+176,128,184,136,0,0,0
+184,128,192,136,0,0,0
+176,136,184,144,0,0,0
+184,136,192,144,66,70,65
+277,278,279,280
+160,144,168,152,255,255,255
+168,144,176,152,223,223,223
+160,152,168,160,255,255,255
+168,152,176,160,223,223,223
+282,283,284,285
+176,144,184,152,0,0,0
+184,144,192,152,18,80,11
+176,152,184,160,0,0,0
+184,152,192,160,12,79,3
+287,288,289,290
+276,281,286,291
+128,160,160,192,255,255,255
+160,160,168,168,255,255,255
+168,160,176,168,223,223,223
+160,168,168,176,255,255,255
+168,168,176,176,221,222,221
+294,295,296,297
+176,160,184,168,0,0,0
+184,160,192,168,12,79,3
+176,168,184,176,0,0,0
+184,168,192,176,12,79,3
+299,300,301,302
+160,176,168,184,255,255,255
+168,176,176,184,172,212,168
+160,184,168,192,255,255,255
+168,184,176,192,114,201,104
+304,305,306,307
+176,176,184,184,0,0,0
+184,176,192,184,3,19,0
+176,184,184,192,0,0,0
+184,184,192,192,3,19,0
+309,310,311,312
+298,303,308,313
+271,292,293,314
+192,128,200,136,0,0,0
+200,128,208,136,0,0,0
+192,136,200,144,45,162,31
+200,136,208,144,24,159,7
+316,317,318,319
+208,128,216,136,0,0,0
+216,128,224,136,0,1,0
+208,136,216,144,22,152,7
+216,136,224,144,12,85,3
+321,322,323,324
+192,144,208,160,32,212,10
+208,144,224,160,32,212,10
+320,325,326,327
+224,128,232,136,8,56,2
+232,128,240,136,27,183,8
+224,136,232,144,0,0,0
+232,136,240,144,3,28,1
+329,330,331,332
+240,128,248,136,32,212,10
+248,128,256,136,32,212,10
+240,136,248,144,30,204,9
+248,136,256,144,32,212,10
+334,335,336,337
+224,144,232,152,11,77,3
+232,144,240,152,0,0,0
+224,152,232,160,19,130,6
+232,152,240,160,0,0,0
+339,340,341,342
+240,144,248,152,21,143,6
+248,144,256,152,32,212,10
+240,152,248,160,16,114,5
+248,152,256,160,32,212,10
+344,345,346,347
+333,338,343,348
+192,160,208,176,32,212,10
+208,160,216,168,32,212,10
+216,160,224,168,32,212,10
+208,168,216,176,32,212,10
+216,168,224,176,27,185,8
+351,352,353,354
+192,176,208,192,8,53,2
+208,176,216,184,6,46,2
+216,176,224,184,0,5,0
+208,184,216,192,9,64,2
+216,184,224,192,13,91,4
+357,358,359,360
+350,355,356,361
+224,160,232,168,17,116,5
+232,160,240,168,0,0,0
+224,168,232,176,3,25,1
+232,168,240,176,0,1,0
+363,364,365,366
+240,160,248,168,18,124,5
+248,160,256,168,32,212,10
+240,168,248,176,26,177,8
+248,168,256,176,32,212,10
+368,369,370,371
+224,176,232,184,0,0,0
+232,176,240,184,14,103,4
+224,184,232,192,24,162,7
+232,184,240,192,32,212,10
+373,374,375,376
+240,176,256,192,32,212,10
+367,372,377,378
+328,349,362,379
+128,192,144,208,255,255,255
+144,192,160,208,255,255,255
+128,208,136,216,255,255,255
+136,208,144,216,255,255,255
+128,216,136,224,191,191,191
+136,216,144,224,0,0,0
+383,384,385,386
+144,208,152,216,255,255,255
+152,208,160,216,255,255,255
+144,216,152,224,159,159,159
+152,216,160,224,255,255,255
+388,389,390,391
+381,382,387,392
+160,192,168,200,255,255,255
+168,192,176,200,71,193,56
+160,200,168,208,255,255,255
+168,200,176,208,45,188,29
+394,395,396,397
+176,192,184,200,0,0,0
+184,192,192,200,12,79,3
+176,200,184,208,0,0,0
+184,200,192,208,12,79,3
+399,400,401,402
+160,208,168,216,255,255,255
+168,208,176,216,31,185,13
+160,216,168,224,255,255,255
+168,216,176,224,38,186,21
+404,405,406,407
+176,208,184,216,0,0,0
+184,208,192,216,12,79,3
+176,216,184,224,0,0,0
+184,216,192,224,12,79,3
+409,410,411,412
+398,403,408,413
+128,224,136,232,191,191,191
+136,224,144,232,0,0,0
+128,232,136,240,255,255,255
+136,232,144,240,255,255,255
+415,416,417,418
+144,224,152,232,159,159,159
+152,224,160,232,255,255,255
+144,232,152,240,255,255,255
+152,232,160,240,255,255,255
+420,421,422,423
+128,240,136,248,200,193,244
+136,240,144,248,200,193,244
+128,248,136,256,35,10,212
+136,248,144,256,35,10,212
+425,426,427,428
+144,240,152,248,200,193,244
+152,240,160,248,200,193,244
+144,248,152,256,35,10,212
+152,248,160,256,35,10,212
+430,431,432,433
+419,424,429,434
+160,224,168,232,255,255,255
+168,224,176,232,56,190,40
+160,232,168,240,255,255,255
+168,232,176,240,94,223,79
+436,437,438,439
+176,224,184,232,0,0,0
+184,224,192,232,12,79,3
+176,232,184,240,32,212,10
+184,232,192,240,32,212,10
+441,442,443,444
+160,240,168,248,200,193,244
+168,240,176,248,117,202,130
+160,248,168,256,35,10,212
+168,248,176,256,51,66,178
+446,447,448,449
+176,240,192,256,32,212,10
+440,445,450,451
+393,414,435,452
+192,192,256,256,32,212,10
+315,380,453,454
+0,61,270,455
+256,0,320,64,255,255,255
+320,0,384,64,255,255,255
+256,64,272,80,255,255,255
+272,64,288,80,255,255,255
+256,80,264,88,254,254,254
+264,80,272,88,208,245,204
+256,88,264,96,71,218,54
+264,88,272,96,32,212,10
+461,462,463,464
+272,80,280,88,133,230,122
+280,80,288,88,70,218,52
+272,88,280,96,32,212,10
+280,88,288,96,32,212,10
+466,467,468,469
+459,460,465,470
+288,64,296,72,255,255,255
+296,64,304,72,255,255,255
+288,72,296,80,238,251,237
+296,72,304,80,197,243,192
+472,473,474,475
+304,64,312,72,255,255,255
+312,64,320,72,255,255,255
+304,72,312,80,163,236,155
+312,72,320,80,139,232,128
+477,478,479,480
+288,80,304,96,32,212,10
+304,80,320,96,32,212,10
+476,481,482,483
+256,96,288,128,32,212,10
+288,96,320,128,32,212,10
+471,484,485,486
+320,64,328,72,255,255,255
+328,64,336,72,255,255,255
+320,72,328,80,127,229,115
+328,72,336,80,117,228,104
+488,489,490,491
+336,64,344,72,255,255,255
+344,64,352,72,255,255,255
+336,72,344,80,125,229,114
+344,72,352,80,137,231,126
+493,494,495,496
+320,80,336,96,32,212,10
+336,80,352,96,32,212,10
+492,497,498,499
+352,64,360,72,255,255,255
+360,64,368,72,255,255,255
+352,72,360,80,160,235,151
+360,72,368,80,192,242,187
+501,502,503,504
+368,64,376,72,255,255,255
+376,64,384,72,255,255,255
+368,72,376,80,233,250,232
+376,72,384,80,255,255,255
+506,507,508,509
+352,80,368,96,32,212,10
+368,80,376,88,32,212,10
+376,80,384,88,62,217,44
+368,88,376,96,32,212,10
+376,88,384,96,32,212,10
+512,513,514,515
+505,510,511,516
+320,96,352,128,32,212,10
+352,96,384,128,32,212,10
+500,517,518,519
+457,458,487,520
+384,0,448,64,255,255,255
+448,0,512,64,255,255,255
+384,64,400,80,255,255,255
+400,64,416,80,255,255,255
+384,80,392,88,125,229,113
+392,80,400,88,198,243,193
+384,88,392,96,32,212,10
+392,88,400,96,32,212,10
+526,527,528,529
+400,80,408,88,253,254,253
+408,80,416,88,255,255,255
+400,88,408,96,61,217,43
+408,88,416,96,158,235,149
+531,532,533,534
+524,525,530,535
+416,64,448,96,254,254,254
+384,96,416,128,32,212,10
+416,96,424,104,55,215,36
+424,96,432,104,172,238,165
+416,104,424,112,32,212,10
+424,104,432,112,32,212,10
+539,540,541,542
+432,96,440,104,254,254,254
+440,96,448,104,255,255,255
+432,104,440,112,94,223,79
+440,104,448,112,234,250,232
+544,545,546,547
+416,112,432,128,32,212,10
+432,112,440,120,32,212,10
+440,112,448,120,55,215,36
+432,120,440,128,32,212,10
+440,120,448,128,32,212,10
+550,551,552,553
+543,548,549,554
+536,537,538,555
+448,64,480,96,255,255,255
+480,64,512,96,255,255,255
+448,96,464,112,255,255,255
+464,96,480,112,255,255,255
+448,112,456,120,210,245,206
+456,112,464,120,255,255,255
+448,120,456,128,44,213,23
+456,120,464,128,201,243,197
+561,562,563,564
+464,112,480,128,255,255,255
+559,560,565,566
+480,96,512,128,255,255,255
+557,558,567,568
+522,523,556,569
+256,128,320,192,32,212,10
+320,128,384,192,32,212,10
+256,192,272,208,32,212,10
+272,192,288,208,32,212,10
+256,208,264,216,32,212,10
+264,208,272,216,32,212,10
+256,216,264,224,28,185,8
+264,216,272,224,0,0,0
+575,576,577,578
+272,208,280,216,32,212,10
+280,208,288,216,32,212,10
+272,216,280,224,16,106,5
+280,216,288,224,32,212,10
+580,581,582,583
+573,574,579,584
+288,192,320,224,32,212,10
+256,224,264,232,28,185,8
+264,224,272,232,0,0,0
+256,232,264,240,32,212,10
+264,232,272,240,32,212,10
+587,588,589,590
+272,224,280,232,16,106,5
+280,224,288,232,32,212,10
+272,232,280,240,32,212,10
+280,232,288,240,32,212,10
+592,593,594,595
+256,240,272,256,32,212,10
+272,240,288,256,32,212,10
+591,596,597,598
+288,224,320,256,32,212,10
+585,586,599,600
+320,192,384,256,32,212,10
+571,572,601,602
+384,128,448,192,32,212,10
+448,128,456,136,32,212,10
+456,128,464,136,45,214,25
+448,136,456,144,32,212,10
+456,136,464,144,32,212,10
+605,606,607,608
+464,128,472,136,213,246,210
+472,128,480,136,255,255,255
+464,136,472,144,61,216,42
+472,136,480,144,240,251,239
+610,611,612,613
+448,144,464,160,32,212,10
+464,144,472,152,32,212,10
+472,144,480,152,115,227,102
+464,152,472,160,32,212,10
+472,152,480,160,33,212,11
+616,617,618,619
+609,614,615,620
+480,128,496,144,255,255,255
+496,128,512,144,255,255,255
+480,144,488,152,255,255,255
+488,144,496,152,255,255,255
+480,152,488,160,204,244,200
+488,152,496,160,255,255,255
+624,625,626,627
+496,144,512,160,255,255,255
+622,623,628,629
+448,160,480,192,32,212,10
+480,160,488,168,93,223,78
+488,160,496,168,255,255,255
+480,168,488,176,33,212,11
+488,168,496,176,223,248,220
+632,633,634,635
+496,160,512,176,255,255,255
+480,176,488,184,32,212,10
+488,176,496,184,149,233,139
+480,184,488,192,32,212,10
+488,184,496,192,90,222,75
+638,639,640,641
+496,176,512,192,255,255,255
+636,637,642,643
+621,630,631,644
+384,192,448,256,32,212,10
+448,192,480,224,32,212,10
+480,192,488,200,32,212,10
+488,192,496,200,47,214,27
+480,200,488,208,32,212,10
+488,200,496,208,32,212,10
+648,649,650,651
+496,192,504,200,254,254,254
+504,192,512,200,255,255,255
+496,200,504,208,245,252,244
+504,200,512,208,255,255,255
+653,654,655,656
+480,208,496,224,32,212,10
+496,208,504,216,230,249,229
+504,208,512,216,255,255,255
+496,216,504,224,237,250,236
+504,216,512,224,255,255,255
+659,660,661,662
+652,657,658,663
+448,224,480,256,32,212,10
+480,224,488,232,32,212,10
+488,224,496,232,35,212,14
+480,232,488,240,32,212,10
+488,232,496,240,66,218,48
+666,667,668,669
+496,224,512,240,254,254,254
+480,240,488,248,32,212,10
+488,240,496,248,117,227,104
+480,248,488,256,32,212,10
+488,248,496,256,184,240,178
+672,673,674,675
+496,240,512,256,255,255,255
+670,671,676,677
+647,664,665,678
+604,645,646,679
+521,570,603,680
+0,256,32,288,255,255,255
+32,256,40,264,255,255,255
+40,256,48,264,90,71,222
+32,264,40,272,255,255,255
+40,264,48,272,90,71,222
+683,684,685,686
+48,256,64,272,35,10,212
+32,272,40,280,255,255,255
+40,272,48,280,90,71,222
+32,280,40,288,255,255,255
+40,280,48,288,90,71,222
+689,690,691,692
+48,272,64,288,35,10,212
+687,688,693,694
+0,288,32,320,255,255,255
+32,288,40,296,255,255,255
+40,288,48,296,83,69,181
+32,296,40,304,255,255,255
+40,296,48,304,66,64,85
+697,698,699,700
+48,288,56,296,21,6,132
+56,288,64,296,21,6,132
+48,296,56,304,0,0,5
+56,296,64,304,4,1,26
+702,703,704,705
+32,304,40,312,255,255,255
+40,304,48,312,41,41,41
+32,312,40,320,243,243,243
+40,312,48,320,2,2,2
+707,708,709,710
+48,304,56,312,10,3,67
+56,304,64,312,35,10,212
+48,312,56,320,17,5,110
+56,312,64,320,35,10,212
+712,713,714,715
+701,706,711,716
+682,695,696,717
+64,256,96,288,35,10,212
+96,256,128,288,35,10,212
+64,288,72,296,21,6,132
+72,288,80,296,21,6,134
+64,296,72,304,4,1,26
+72,296,80,304,4,1,24
+721,722,723,724
+80,288,88,296,24,6,152
+88,288,96,296,32,9,197
+80,296,88,304,0,0,3
+88,296,96,304,1,0,8
+726,727,728,729
+64,304,80,320,35,10,212
+80,304,88,312,30,8,189
+88,304,96,312,2,0,18
+80,312,88,320,35,10,212
+88,312,96,320,8,2,49
+732,733,734,735
+725,730,731,736
+96,288,104,296,35,10,212
+104,288,112,296,35,10,212
+96,296,104,304,24,6,148
+104,296,112,304,35,10,212
+738,739,740,741
+112,288,128,304,35,10,212
+96,304,104,312,7,1,46
+104,304,112,312,35,10,212
+96,312,104,320,6,1,42
+104,312,112,320,35,10,212
+744,745,746,747
+112,304,128,320,35,10,212
+742,743,748,749
+719,720,737,750
+0,320,32,352,255,255,255
+32,320,40,328,197,197,197
+40,320,48,328,0,0,0
+32,328,40,336,147,147,147
+40,328,48,336,0,0,0
+753,754,755,756
+48,320,56,328,24,7,152
+56,320,64,328,35,10,212
+48,328,56,336,11,3,67
+56,328,64,336,13,3,79
+758,759,760,761
+32,336,40,344,99,99,99
+40,336,48,344,2,0,14
+32,344,40,352,48,48,48
+40,344,48,352,10,2,63
+763,764,765,766
+48,336,56,344,13,3,79
+56,336,64,344,13,3,79
+48,344,56,352,35,10,212
+56,344,64,352,35,10,212
+768,769,770,771
+757,762,767,772
+0,352,16,368,255,255,255
+16,352,24,360,255,255,255
+24,352,32,360,249,249,249
+16,360,24,368,255,255,255
+24,360,32,368,204,204,204
+775,776,777,778
+0,368,16,384,255,255,255
+16,368,24,376,255,255,255
+24,368,32,376,157,157,157
+16,376,24,384,255,255,255
+24,376,32,384,106,106,106
+781,782,783,784
+774,779,780,785
+32,352,40,360,6,6,6
+40,352,48,360,16,4,105
+32,360,40,368,0,0,0
+40,360,48,368,23,6,143
+787,788,789,790
+48,352,64,368,35,10,212
+32,368,40,376,0,0,0
+40,368,48,376,57,39,190
+32,376,40,384,0,0,0
+40,376,48,384,0,0,0
+793,794,795,796
+48,368,56,376,35,10,212
+56,368,64,376,34,9,211
+48,376,56,384,0,0,0
+56,376,64,384,0,0,0
+798,799,800,801
+791,792,797,802
+752,773,786,803
+64,320,72,328,35,10,212
+72,320,80,328,35,10,212
+64,328,72,336,13,3,79
+72,328,80,336,9,2,61
+805,806,807,808
+80,320,88,328,28,7,171
+88,320,96,328,0,0,6
+80,328,88,336,4,1,28
+88,328,96,336,18,5,115
+810,811,812,813
+64,336,72,344,13,3,78
+72,336,80,344,8,2,53
+64,344,72,352,35,10,212
+72,344,80,352,35,10,212
+815,816,817,818
+80,336,88,344,1,0,10
+88,336,96,344,19,5,120
+80,344,88,352,14,4,91
+88,344,96,352,0,0,2
+820,821,822,823
+809,814,819,824
+96,320,104,328,19,5,118
+104,320,112,328,35,10,212
+96,328,104,336,34,9,211
+104,328,112,336,35,10,212
+826,827,828,829
+112,320,120,328,35,10,212
+120,320,128,328,34,9,211
+112,328,120,336,35,10,212
+120,328,128,336,30,8,185
+831,832,833,834
+96,336,104,344,35,10,212
+104,336,112,344,35,10,212
+96,344,104,352,31,8,192
+104,344,112,352,35,10,212
+836,837,838,839
+112,336,120,344,35,10,212
+120,336,128,344,23,6,142
+112,344,120,352,35,10,212
+120,344,128,352,16,4,100
+841,842,843,844
+830,835,840,845
+64,352,80,368,35,10,212
+80,352,88,360,21,6,131
+88,352,96,360,0,0,0
+80,360,88,368,14,4,92
+88,360,96,368,0,0,2
+848,849,850,851
+64,368,72,376,32,9,198
+72,368,80,376,19,5,121
+64,376,72,384,0,0,0
+72,376,80,384,2,0,17
+853,854,855,856
+80,368,88,376,0,0,4
+88,368,96,376,14,3,90
+80,376,88,384,17,4,111
+88,376,96,384,34,9,209
+858,859,860,861
+847,852,857,862
+96,352,104,360,27,7,167
+104,352,112,360,35,10,212
+96,360,104,368,31,9,195
+104,360,112,368,35,10,212
+864,865,866,867
+112,352,120,360,35,10,212
+120,352,128,360,9,2,58
+112,360,120,368,34,9,211
+120,360,128,368,2,0,15
+869,870,871,872
+96,368,112,384,35,10,212
+112,368,120,376,30,8,185
+120,368,128,376,0,0,0
+112,376,120,384,23,6,142
+120,376,128,384,0,0,0
+875,876,877,878
+868,873,874,879
+825,846,863,880
+718,751,804,881
+128,256,160,288,35,10,212
+160,256,176,272,35,10,212
+176,256,184,264,48,192,50
+184,256,192,264,32,212,10
+176,264,184,272,51,100,144
+184,264,192,272,32,212,10
+885,886,887,888
+160,272,176,288,35,10,212
+176,272,184,280,39,17,211
+184,272,192,280,48,189,53
+176,280,184,288,35,10,212
+184,280,192,288,56,72,177
+891,892,893,894
+884,889,890,895
+128,288,144,304,35,10,212
+144,288,160,304,35,10,212
+128,304,136,312,35,10,212
+136,304,144,312,35,10,212
+128,312,136,320,21,6,129
+136,312,144,320,24,6,147
+899,900,901,902
+144,304,152,312,35,10,212
+152,304,160,312,35,10,212
+144,312,152,320,28,8,174
+152,312,160,320,14,3,87
+904,905,906,907
+897,898,903,908
+160,288,176,304,35,10,212
+176,288,192,304,35,10,212
+160,304,168,312,35,10,212
+168,304,176,312,35,10,212
+160,312,168,320,9,2,62
+168,312,176,320,28,7,171
+912,913,914,915
+176,304,184,312,35,10,212
+184,304,192,312,35,10,212
+176,312,184,320,35,10,212
+184,312,192,320,26,7,162
+917,918,919,920
+910,911,916,921
+883,896,909,922
+192,256,224,288,32,212,10
+224,256,256,288,32,212,10
+192,288,200,296,60,123,133
+200,288,208,296,32,212,10
+192,296,200,304,38,13,212
+200,296,208,304,61,149,109
+926,927,928,929
+208,288,224,304,32,212,10
+192,304,200,312,35,10,212
+200,304,208,312,37,13,211
+192,312,200,320,16,4,101
+200,312,208,320,10,2,68
+932,933,934,935
+208,304,216,312,64,150,112
+216,304,224,312,32,212,10
+208,312,216,320,9,2,61
+216,312,224,320,26,87,26
+937,938,939,940
+930,931,936,941
+224,288,240,304,32,212,10
+240,288,256,304,32,212,10
+224,304,232,312,32,212,10
+232,304,240,312,32,212,10
+224,312,232,320,27,184,8
+232,312,240,320,32,212,10
+945,946,947,948
+240,304,248,312,32,212,10
+248,304,256,312,32,212,10
+240,312,248,320,32,212,10
+248,312,256,320,22,153,7
+950,951,952,953
+943,944,949,954
+924,925,942,955
+128,320,136,328,2,0,15
+136,320,144,328,7,2,51
+128,328,136,336,0,0,0
+136,328,144,336,5,1,38
+957,958,959,960
+144,320,152,328,4,1,28
+152,320,160,328,15,4,96
+144,328,152,336,32,9,197
+152,328,160,336,35,10,212
+962,963,964,965
+128,336,136,344,0,0,0
+136,336,144,344,26,7,162
+128,344,136,352,3,0,23
+136,344,144,352,34,9,211
+967,968,969,970
+144,336,160,352,35,10,212
+961,966,971,972
+160,320,168,328,15,4,96
+168,320,176,328,30,8,188
+160,328,168,336,35,10,212
+168,328,176,336,35,10,212
+974,975,976,977
+176,320,184,328,34,9,208
+184,320,192,328,3,0,23
+176,328,184,336,34,9,208
+184,328,192,336,33,9,206
+979,980,981,982
+160,336,176,352,35,10,212
+176,336,184,344,35,10,212
+184,336,192,344,34,9,211
+176,344,184,352,22,6,141
+184,344,192,352,4,1,29
+985,986,987,988
+978,983,984,989
+128,352,136,360,10,2,66
+136,352,144,360,35,10,212
+128,360,136,368,17,4,108
+136,360,144,368,35,10,212
+991,992,993,994
+144,352,160,368,35,10,212
+128,368,136,376,24,6,149
+136,368,144,376,35,10,212
+128,376,136,384,31,8,192
+136,376,144,384,35,10,212
+997,998,999,1000
+144,368,160,384,35,10,212
+995,996,1001,1002
+160,352,168,360,35,10,212
+168,352,176,360,24,6,151
+160,360,168,368,35,10,212
+168,360,176,368,11,3,71
+1004,1005,1006,1007
+176,352,184,360,0,0,3
+184,352,192,360,20,5,127
+176,360,184,368,7,2,46
+184,360,192,368,35,10,212
+1009,1010,1011,1012
+160,368,168,376,35,10,212
+168,368,176,376,10,2,68
+160,376,168,384,35,10,212
+168,376,176,384,25,7,155
+1014,1015,1016,1017
+176,368,184,376,3,0,24
+184,368,192,376,33,9,203
+176,376,184,384,0,0,3
+184,376,192,384,3,0,21
+1019,1020,1021,1022
+1008,1013,1018,1023
+973,990,1003,1024
+192,320,200,328,12,3,77
+200,320,208,328,17,4,104
+192,328,200,336,35,10,212
+200,328,208,336,35,10,212
+1026,1027,1028,1029
+208,320,216,328,14,4,92
+216,320,224,328,2,0,17
+208,328,216,336,35,10,212
+216,328,224,336,26,7,163
+1031,1032,1033,1034
+192,336,200,344,30,8,186
+200,336,208,344,26,7,165
+192,344,200,352,0,0,5
+200,344,208,352,3,1,23
+1036,1037,1038,1039
+208,336,216,344,26,7,159
+216,336,224,344,22,6,135
+208,344,216,352,4,1,26
+216,344,224,352,2,0,15
+1041,1042,1043,1044
+1030,1035,1040,1045
+224,320,232,328,3,18,1
+232,320,240,328,46,183,44
+224,328,232,336,0,0,0
+232,328,240,336,28,13,145
+1047,1048,1049,1050
+240,320,248,328,32,212,10
+248,320,256,328,18,122,5
+240,328,248,336,55,107,143
+248,328,256,336,40,151,39
+1052,1053,1054,1055
+224,336,232,344,0,0,0
+232,336,240,344,23,6,148
+224,344,232,352,0,0,0
+232,344,240,352,29,8,183
+1057,1058,1059,1060
+240,336,248,344,35,10,212
+248,336,256,344,34,12,199
+240,344,248,352,35,10,212
+248,344,256,352,35,10,212
+1062,1063,1064,1065
+1051,1056,1061,1066
+192,352,200,360,33,9,205
+200,352,208,360,35,10,212
+192,360,200,368,35,10,212
+200,360,208,368,35,10,212
+1068,1069,1070,1071
+208,352,216,360,35,10,212
+216,352,224,360,15,4,94
+208,360,216,368,33,9,203
+216,360,224,368,3,0,21
+1073,1074,1075,1076
+192,368,200,376,35,10,212
+200,368,208,376,33,9,201
+192,376,200,384,8,2,50
+200,376,208,384,2,0,20
+1078,1079,1080,1081
+208,368,216,376,10,2,67
+216,368,224,376,0,0,0
+208,376,216,384,16,4,107
+216,376,224,384,0,0,0
+1083,1084,1085,1086
+1072,1077,1082,1087
+224,352,232,360,2,0,16
+232,352,240,360,34,9,211
+224,360,232,368,9,2,61
+232,360,240,368,35,10,212
+1089,1090,1091,1092
+240,352,256,368,35,10,212
+224,368,232,376,17,4,106
+232,368,240,376,35,10,212
+224,376,232,384,24,6,151
+232,376,240,384,35,10,212
+1095,1096,1097,1098
+240,368,256,384,35,10,212
+1093,1094,1099,1100
+1046,1067,1088,1101
+923,956,1025,1102
+0,384,16,400,255,255,255
+16,384,24,392,255,255,255
+24,384,32,392,210,210,210
+16,392,24,400,255,255,255
+24,392,32,400,255,255,255
+1105,1106,1107,1108
+0,400,16,416,255,255,255
+16,400,32,416,255,255,255
+1104,1109,1110,1111
+32,384,40,392,191,191,191
+40,384,48,392,67,53,167
+32,392,40,400,255,255,255
+40,392,48,400,90,71,222
+1113,1114,1115,1116
+48,384,56,392,26,7,159
+56,384,64,392,26,7,163
+48,392,56,400,35,10,212
+56,392,64,400,35,10,212
+1118,1119,1120,1121
+32,400,40,408,255,255,255
+40,400,48,408,90,71,222
+32,408,40,416,255,255,255
+40,408,48,416,90,71,222
+1123,1124,1125,1126
+48,400,64,416,35,10,212
+1117,1122,1127,1128
+0,416,32,448,255,255,255
+32,416,40,424,255,255,255
+40,416,48,424,90,71,222
+32,424,40,432,255,255,255
+40,424,48,432,90,71,222
+1131,1132,1133,1134
+48,416,64,432,35,10,212
+32,432,40,440,255,255,255
+40,432,48,440,90,71,222
+32,440,40,448,255,255,255
+40,440,48,448,90,71,222
+1137,1138,1139,1140
+48,432,64,448,35,10,212
+1135,1136,1141,1142
+1112,1129,1130,1143
+64,384,128,448,34,9,210
+0,448,32,480,255,255,255
+32,448,40,456,255,255,255
+40,448,48,456,90,71,222
+32,456,40,464,255,255,255
+40,456,48,464,90,71,222
+1147,1148,1149,1150
+48,448,64,464,35,10,212
+32,464,40,472,255,255,255
+40,464,48,472,90,71,222
+32,472,40,480,255,255,255
+40,472,48,480,255,255,255
+1153,1154,1155,1156
+48,464,56,472,35,10,212
+56,464,64,472,35,10,212
+48,472,56,480,255,255,255
+56,472,64,480,255,255,255
+1158,1159,1160,1161
+1151,1152,1157,1162
+0,480,32,512,255,255,255
+32,480,64,512,255,255,255
+1146,1163,1164,1165
+64,448,80,464,35,10,212
+80,448,96,464,35,10,212
+64,464,72,472,35,10,212
+72,464,80,472,35,10,212
+64,472,72,480,255,255,255
+72,472,80,480,255,255,255
+1169,1170,1171,1172
+80,464,88,472,35,10,212
+88,464,96,472,35,10,212
+80,472,88,480,255,255,255
+88,472,96,480,255,255,255
+1174,1175,1176,1177
+1167,1168,1173,1178
+96,448,112,464,35,10,212
+112,448,128,464,35,10,212
+96,464,104,472,35,10,212
+104,464,112,472,35,10,212
+96,472,104,480,255,255,255
+104,472,112,480,255,255,255
+1182,1183,1184,1185
+112,464,120,472,35,10,212
+120,464,128,472,35,10,212
+112,472,120,480,255,255,255
+120,472,128,480,255,255,255
+1187,1188,1189,1190
+1180,1181,1186,1191
+64,480,96,512,255,255,255
+96,480,128,512,255,255,255
+1179,1192,1193,1194
+1144,1145,1166,1195
+128,384,160,416,34,9,211
+160,384,176,400,35,10,212
+176,384,184,392,28,8,175
+184,384,192,392,18,5,116
+176,392,184,400,35,10,212
+184,392,192,400,35,10,212
+1199,1200,1201,1202
+160,400,176,416,35,10,212
+176,400,192,416,35,10,212
+1198,1203,1204,1205
+128,416,160,448,35,10,212
+160,416,192,448,35,10,212
+1197,1206,1207,1208
+192,384,200,392,20,5,127
+200,384,208,392,30,8,188
+192,392,200,400,35,10,212
+200,392,208,400,35,10,212
+1210,1211,1212,1213
+208,384,216,392,32,9,199
+216,384,224,392,26,7,159
+208,392,216,400,35,10,212
+216,392,224,400,35,10,212
+1215,1216,1217,1218
+192,400,208,416,35,10,212
+208,400,224,416,35,10,212
+1214,1219,1220,1221
+224,384,256,416,34,9,211
+192,416,224,448,35,10,212
+224,416,256,448,35,10,212
+1222,1223,1224,1225
+128,448,144,464,35,10,212
+144,448,160,464,35,10,212
+128,464,136,472,35,10,212
+136,464,144,472,35,10,212
+128,472,136,480,255,255,255
+136,472,144,480,255,255,255
+1229,1230,1231,1232
+144,464,152,472,35,10,212
+152,464,160,472,35,10,212
+144,472,152,480,255,255,255
+152,472,160,480,255,255,255
+1234,1235,1236,1237
+1227,1228,1233,1238
+160,448,176,464,35,10,212
+176,448,192,464,35,10,212
+160,464,168,472,35,10,212
+168,464,176,472,35,10,212
+160,472,168,480,255,255,255
+168,472,176,480,255,255,255
+1242,1243,1244,1245
+176,464,184,472,35,10,212
+184,464,192,472,35,10,212
+176,472,184,480,255,255,255
+184,472,192,480,255,255,255
+1247,1248,1249,1250
+1240,1241,1246,1251
+128,480,160,512,255,255,255
+160,480,192,512,255,255,255
+1239,1252,1253,1254
+192,448,208,464,35,10,212
+208,448,224,464,35,10,212
+192,464,200,472,35,10,212
+200,464,208,472,35,10,212
+192,472,200,480,255,255,255
+200,472,208,480,255,255,255
+1258,1259,1260,1261
+208,464,216,472,35,10,212
+216,464,224,472,35,10,212
+208,472,216,480,255,255,255
+216,472,224,480,255,255,255
+1263,1264,1265,1266
+1256,1257,1262,1267
+224,448,240,464,35,10,212
+240,448,256,464,35,10,212
+224,464,232,472,35,10,212
+232,464,240,472,35,10,212
+224,472,232,480,255,255,255
+232,472,240,480,255,255,255
+1271,1272,1273,1274
+240,464,248,472,35,10,212
+248,464,256,472,35,10,212
+240,472,248,480,255,255,255
+248,472,256,480,255,255,255
+1276,1277,1278,1279
+1269,1270,1275,1280
+192,480,224,512,255,255,255
+224,480,256,512,255,255,255
+1268,1281,1282,1283
+1209,1226,1255,1284
+882,1103,1196,1285
+256,256,288,288,32,212,10
+288,256,320,288,32,212,10
+256,288,272,304,32,212,10
+272,288,288,304,32,212,10
+256,304,264,312,32,212,10
+264,304,272,312,32,212,10
+256,312,264,320,17,115,5
+264,312,272,320,32,212,10
+1291,1292,1293,1294
+272,304,288,320,32,212,10
+1289,1290,1295,1296
+288,288,304,304,32,212,10
+304,288,320,304,32,212,10
+288,304,304,320,32,212,10
+304,304,312,312,32,212,10
+312,304,320,312,32,212,10
+304,312,312,320,19,131,6
+312,312,320,320,20,137,6
+1301,1302,1303,1304
+1298,1299,1300,1305
+1287,1288,1297,1306
+320,256,352,288,32,212,10
+352,256,384,288,32,212,10
+320,288,336,304,32,212,10
+336,288,352,304,32,212,10
+320,304,336,320,32,212,10
+336,304,344,312,32,212,10
+344,304,352,312,32,212,10
+336,312,344,320,31,211,9
+344,312,352,320,22,153,6
+1313,1314,1315,1316
+1310,1311,1312,1317
+352,288,368,304,32,212,10
+368,288,384,304,32,212,10
+352,304,360,312,32,212,10
+360,304,368,312,32,212,10
+352,312,360,320,12,82,3
+360,312,368,320,8,61,2
+1321,1322,1323,1324
+368,304,376,312,32,212,10
+376,304,384,312,32,212,10
+368,312,376,320,12,86,3
+376,312,384,320,26,175,8
+1326,1327,1328,1329
+1319,1320,1325,1330
+1308,1309,1318,1331
+256,320,264,328,0,0,0
+264,320,272,328,30,201,9
+256,328,264,336,0,0,0
+264,328,272,336,24,166,7
+1333,1334,1335,1336
+272,320,288,336,32,212,10
+256,336,264,344,0,0,0
+264,336,272,344,32,119,32
+256,344,264,352,4,1,27
+264,344,272,352,14,4,92
+1339,1340,1341,1342
+272,336,280,344,36,212,15
+280,336,288,344,32,212,10
+272,344,280,352,48,37,202
+280,344,288,352,50,94,145
+1344,1345,1346,1347
+1337,1338,1343,1348
+288,320,296,328,32,212,10
+296,320,304,328,25,172,7
+288,328,296,336,31,211,9
+296,328,304,336,7,54,2
+1350,1351,1352,1353
+304,320,312,328,0,1,0
+312,320,320,328,22,152,6
+304,328,312,336,8,61,2
+312,328,320,336,31,211,10
+1355,1356,1357,1358
+288,336,296,344,21,147,6
+296,336,304,344,0,3,0
+288,344,296,352,5,29,5
+296,344,304,352,43,95,37
+1360,1361,1362,1363
+304,336,312,344,26,177,8
+312,336,320,344,32,212,10
+304,344,312,352,52,215,33
+312,344,320,352,32,212,10
+1365,1366,1367,1368
+1354,1359,1364,1369
+256,352,264,360,10,2,65
+264,352,272,360,9,2,57
+256,360,264,368,16,4,105
+264,360,272,368,2,0,20
+1371,1372,1373,1374
+272,352,280,360,35,10,212
+280,352,288,360,19,5,121
+272,360,280,368,32,9,198
+280,360,288,368,2,0,15
+1376,1377,1378,1379
+256,368,264,376,23,6,143
+264,368,272,376,0,0,0
+256,376,264,384,29,8,182
+264,376,272,384,0,0,0
+1381,1382,1383,1384
+272,368,280,376,12,3,78
+280,368,288,376,4,1,31
+272,376,280,384,0,0,0
+280,376,288,384,23,6,147
+1386,1387,1388,1389
+1375,1380,1385,1390
+288,352,296,360,17,17,17
+296,352,304,360,235,235,235
+288,360,296,368,119,117,138
+296,360,304,368,255,255,255
+1392,1393,1394,1395
+304,352,320,368,253,254,253
+288,368,296,376,144,132,228
+296,368,304,376,255,255,255
+288,376,296,384,145,132,233
+296,376,304,384,255,255,255
+1398,1399,1400,1401
+304,368,320,384,255,255,255
+1396,1397,1402,1403
+1349,1370,1391,1404
+320,320,328,328,32,212,10
+328,320,336,328,31,210,9
+320,328,328,336,32,212,10
+328,328,336,336,16,113,5
+1406,1407,1408,1409
+336,320,344,328,12,84,3
+344,320,352,328,0,6,0
+336,328,344,336,1,8,0
+344,328,352,336,24,167,7
+1411,1412,1413,1414
+320,336,328,344,30,203,9
+328,336,336,344,1,12,0
+320,344,328,352,22,149,6
+328,344,336,352,0,0,0
+1416,1417,1418,1419
+336,336,344,344,15,106,4
+344,336,352,344,32,212,10
+336,344,344,352,26,181,8
+344,344,352,352,32,212,10
+1421,1422,1423,1424
+1410,1415,1420,1425
+352,320,360,328,11,81,3
+360,320,368,328,15,103,4
+352,328,360,336,32,212,10
+360,328,368,336,32,212,10
+1427,1428,1429,1430
+368,320,376,328,6,48,2
+376,320,384,328,1,7,0
+368,328,376,336,31,208,9
+376,328,384,336,4,31,1
+1432,1433,1434,1435
+352,336,360,344,32,212,10
+360,336,368,344,32,212,10
+352,344,360,352,48,214,29
+360,344,368,352,80,220,64
+1437,1438,1439,1440
+368,336,376,344,32,212,10
+376,336,384,344,11,77,3
+368,344,376,352,122,228,109
+376,344,384,352,53,82,50
+1442,1443,1444,1445
+1431,1436,1441,1446
+320,352,328,360,132,138,132
+328,352,336,360,0,0,0
+320,360,328,368,144,144,144
+328,360,336,368,0,0,0
+1448,1449,1450,1451
+336,352,344,360,235,248,234
+344,352,352,360,248,253,248
+336,360,344,368,246,246,246
+344,360,352,368,255,255,255
+1453,1454,1455,1456
+320,368,328,376,203,203,203
+328,368,336,376,0,0,0
+320,376,328,384,255,255,255
+328,376,336,384,110,110,110
+1458,1459,1460,1461
+336,368,344,376,154,154,154
+344,368,352,376,255,255,255
+336,376,344,384,1,1,1
+344,376,352,384,52,52,52
+1463,1464,1465,1466
+1452,1457,1462,1467
+352,352,368,368,255,255,255
+368,352,376,360,254,254,254
+376,352,384,360,42,42,42
+368,360,376,368,191,191,191
+376,360,384,368,0,0,0
+1470,1471,1472,1473
+352,368,360,376,255,255,255
+360,368,368,376,212,212,212
+352,376,360,384,53,53,53
+360,376,368,384,3,3,3
+1475,1476,1477,1478
+368,368,376,376,29,29,29
+376,368,384,376,84,84,84
+368,376,376,384,85,85,85
+376,376,384,384,245,245,245
+1480,1481,1482,1483
+1469,1474,1479,1484
+1426,1447,1468,1485
+1307,1332,1405,1486
+384,256,416,288,32,212,10
+416,256,448,288,32,212,10
+384,288,416,320,32,212,10
+416,288,432,304,32,212,10
+432,288,448,304,32,212,10
+416,304,432,320,32,212,10
+432,304,440,312,32,212,10
+440,304,448,312,32,212,10
+432,312,440,320,34,212,12
+440,312,448,320,145,232,136
+1494,1495,1496,1497
+1491,1492,1493,1498
+1488,1489,1490,1499
+448,256,464,272,32,212,10
+464,256,480,272,32,212,10
+448,272,464,288,32,212,10
+464,272,472,280,32,212,10
+472,272,480,280,56,216,37
+464,280,472,288,32,212,11
+472,280,480,288,188,241,182
+1504,1505,1506,1507
+1501,1502,1503,1508
+480,256,488,264,50,215,31
+488,256,496,264,248,253,248
+480,264,488,272,147,233,137
+488,264,496,272,255,255,255
+1510,1511,1512,1513
+496,256,512,272,255,255,255
+480,272,488,280,244,252,243
+488,272,496,280,255,255,255
+480,280,488,288,255,255,255
+488,280,496,288,255,255,255
+1516,1517,1518,1519
+496,272,512,288,255,255,255
+1514,1515,1520,1521
+448,288,456,296,32,212,10
+456,288,464,296,32,212,10
+448,296,456,304,32,212,10
+456,296,464,304,98,215,85
+1523,1524,1525,1526
+464,288,472,296,63,148,53
+472,288,480,296,193,193,193
+464,296,472,304,2,3,2
+472,296,480,304,126,126,126
+1528,1529,1530,1531
+448,304,456,312,112,226,99
+456,304,464,312,195,198,194
+448,312,456,320,253,254,253
+456,312,464,320,149,149,149
+1533,1534,1535,1536
+464,304,472,312,0,0,0
+472,304,480,312,174,174,174
+464,312,472,320,0,0,0
+472,312,480,320,225,225,225
+1538,1539,1540,1541
+1527,1532,1537,1542
+480,288,512,320,255,255,255
+1509,1522,1543,1544
+384,320,392,328,25,169,7
+392,320,400,328,32,212,10
+384,328,392,336,9,67,2
+392,328,400,336,32,212,10
+1546,1547,1548,1549
+400,320,408,328,32,212,10
+408,320,416,328,32,212,10
+400,328,408,336,32,212,10
+408,328,416,336,53,215,34
+1551,1552,1553,1554
+384,336,392,344,6,34,3
+392,336,400,344,86,221,70
+384,344,392,352,54,54,54
+392,344,400,352,255,255,255
+1556,1557,1558,1559
+400,336,408,344,171,238,164
+408,336,416,344,248,253,247
+400,344,408,352,255,255,255
+408,344,416,352,255,255,255
+1561,1562,1563,1564
+1550,1555,1560,1565
+416,320,424,328,32,212,10
+424,320,432,328,67,218,49
+416,328,424,336,158,235,150
+424,328,432,336,249,253,248
+1567,1568,1569,1570
+432,320,440,328,202,244,198
+440,320,448,328,255,255,255
+432,328,440,336,255,255,255
+440,328,448,336,255,255,255
+1572,1573,1574,1575
+416,336,432,352,255,255,255
+432,336,448,352,255,255,255
+1571,1576,1577,1578
+384,352,392,360,103,103,103
+392,352,400,360,255,255,255
+384,360,392,368,191,191,191
+392,360,400,368,255,255,255
+1580,1581,1582,1583
+400,352,416,368,255,255,255
+384,368,400,384,254,254,254
+400,368,416,384,255,255,255
+1584,1585,1586,1587
+416,352,448,384,254,254,254
+1566,1579,1588,1589
+448,320,456,328,255,255,255
+456,320,464,328,99,99,99
+448,328,456,336,255,255,255
+456,328,464,336,49,49,49
+1591,1592,1593,1594
+464,320,472,328,19,19,19
+472,320,480,328,254,254,254
+464,328,472,336,69,69,69
+472,328,480,336,255,255,255
+1596,1597,1598,1599
+448,336,456,344,253,253,253
+456,336,464,344,11,11,11
+448,344,456,352,229,229,229
+456,344,464,352,0,0,0
+1601,1602,1603,1604
+464,336,472,344,130,130,130
+472,336,480,344,255,255,255
+464,344,472,352,195,195,195
+472,344,480,352,255,255,255
+1606,1607,1608,1609
+1595,1600,1605,1610
+480,320,512,352,255,255,255
+448,352,456,360,229,229,229
+456,352,464,360,127,127,127
+448,360,456,368,255,255,255
+456,360,464,368,255,255,255
+1613,1614,1615,1616
+464,352,472,360,249,249,249
+472,352,480,360,255,255,255
+464,360,472,368,255,255,255
+472,360,480,368,255,255,255
+1618,1619,1620,1621
+448,368,456,376,102,102,102
+456,368,464,376,114,114,114
+448,376,456,384,12,12,12
+456,376,464,384,109,109,109
+1623,1624,1625,1626
+464,368,480,384,255,255,255
+1617,1622,1627,1628
+480,352,512,384,255,255,255
+1611,1612,1629,1630
+1500,1545,1590,1631
+256,384,264,392,34,9,210
+264,384,272,392,26,7,159
+256,392,264,400,35,10,212
+264,392,272,400,35,10,212
+1633,1634,1635,1636
+272,384,280,392,26,7,161
+280,384,288,392,34,9,211
+272,392,280,400,35,10,212
+280,392,288,400,35,10,212
+1638,1639,1640,1641
+256,400,272,416,35,10,212
+272,400,288,416,35,10,212
+1637,1642,1643,1644
+288,384,296,392,145,132,233
+296,384,304,392,255,255,255
+288,392,296,400,145,132,233
+296,392,304,400,255,255,255
+1646,1647,1648,1649
+304,384,320,400,255,255,255
+288,400,296,408,145,132,233
+296,400,304,408,255,255,255
+288,408,296,416,145,132,233
+296,408,304,416,255,255,255
+1652,1653,1654,1655
+304,400,320,416,255,255,255
+1650,1651,1656,1657
+256,416,288,448,35,10,212
+288,416,296,424,145,132,233
+296,416,304,424,255,255,255
+288,424,296,432,145,132,233
+296,424,304,432,255,255,255
+1660,1661,1662,1663
+304,416,320,432,255,255,255
+288,432,296,440,145,132,233
+296,432,304,440,255,255,255
+288,440,296,448,145,132,233
+296,440,304,448,255,255,255
+1666,1667,1668,1669
+304,432,320,448,255,255,255
+1664,1665,1670,1671
+1645,1658,1659,1672
+320,384,336,400,254,254,254
+336,384,344,392,196,196,196
+344,384,352,392,140,140,140
+336,392,344,400,255,255,255
+344,392,352,400,255,255,255
+1675,1676,1677,1678
+320,400,336,416,255,255,255
+336,400,352,416,255,255,255
+1674,1679,1680,1681
+352,384,360,392,147,147,147
+360,384,368,392,207,207,207
+352,392,360,400,255,255,255
+360,392,368,400,255,255,255
+1683,1684,1685,1686
+368,384,384,400,254,254,254
+352,400,368,416,255,255,255
+368,400,384,416,255,255,255
+1687,1688,1689,1690
+320,416,352,448,255,255,255
+352,416,384,448,255,255,255
+1682,1691,1692,1693
+256,448,272,464,35,10,212
+272,448,288,464,35,10,212
+256,464,264,472,35,10,212
+264,464,272,472,35,10,212
+256,472,264,480,255,255,255
+264,472,272,480,255,255,255
+1697,1698,1699,1700
+272,464,280,472,35,10,212
+280,464,288,472,35,10,212
+272,472,280,480,255,255,255
+280,472,288,480,255,255,255
+1702,1703,1704,1705
+1695,1696,1701,1706
+288,448,296,456,145,132,233
+296,448,304,456,255,255,255
+288,456,296,464,145,132,233
+296,456,304,464,255,255,255
+1708,1709,1710,1711
+304,448,320,464,255,255,255
+288,464,296,472,145,132,233
+296,464,304,472,255,255,255
+288,472,296,480,255,255,255
+296,472,304,480,255,255,255
+1714,1715,1716,1717
+304,464,320,480,255,255,255
+1712,1713,1718,1719
+256,480,288,512,255,255,255
+288,480,320,512,255,255,255
+1707,1720,1721,1722
+320,448,384,512,255,255,255
+1673,1694,1723,1724
+384,384,512,512,254,254,254
+1487,1632,1725,1726
+456,681,1286,1727
diff --git a/projet-ayoub-buyhari/Readme.md b/projet-ayoub-buyhari/Readme.md
new file mode 100644
index 0000000000000000000000000000000000000000..125391d8a6d49cfa9f57d29410aa732d3937c969
--- /dev/null
+++ b/projet-ayoub-buyhari/Readme.md
@@ -0,0 +1,124 @@
+- - -
+Title: Projet  
+author: Buhyari Ayoub
+- - -
+#journal
+POUR LES ORDRES >4 IL FAUT ATTENDRE UN PEU DE TEMPS QUE LES CALCULES SE FONT SUR LE TERMINAL POUR QUE CELA S'AFFICHE (exemple 30 secondes pour l'ordre 5)
+
+Mercredi 27/03: realisation de la class Bloc
+Jeudi 28/03: comprehension de la recurcivité + fonction decoupage : couleur_proche et fusion_4_bloc que je sais pas comment relier a mon algo principale image_rec
+Samedi 29/03:
+realisation d'une fonction qui convertie image en bloc et fonction qui divise bloc recurcivement en liste de sous_bloc (une liste avec des blocs) -> pas liste de liste de bloc etc
+Lundi 01/04: partie ligne de commande fini avec 3 commandes - une pour  enregistrer l'image  au format png
+          - une pour enregistrer l'image au format csv
+          - une pour afficher l'image seulement qui est elle meme au format png au debut et a la fin de l'algo
+          -affiche un document csv en une image 
+            
+
+
+
+#Documentation
+Fichier n*1: Decoupage
+(1)
+couleur_proche : parametre:liste_bloc return: bool
+description:
+calcule si une liste de 4 bloc sont de couleur proche
+
+(2)
+fusion_4_bloc: parametre:liste_bloc return: Bloc
+description:
+fusionne 4 blocs pour en former 1 (utile pour couleur_proche)
+
+(3)
+couleur_moyenne_image: parametre:Image return: tuple (r,v,b)
+description:
+calcule la moyenne d'une image donnée (utile pour ordre 0)
+
+(4)
+image_to_block: parametre: image return: Bloc
+convertie une image en un bloc sans couleur
+
+(5)
+divise_bloc: parametre:bloc ordre:entier>0
+description:
+divise un bloc en plusieur sous bloc selon l'ordre choisit 
+
+(6)
+affiche_liste_bloc: parametre:liste de bloc
+description:
+convertie une liste de bloc en une image
+
+(7)
+couleur_moyenne_bloc: parametre:image et un bloc return:couleur moyenne dune bloc
+description:
+prend un bloc dune image et fait la moyenne des couleurs de ce bloc et renvoie une couleur 
+
+Fichier 2: algo_rec
+(1)
+image_rec: parametre:image , ordre>0 return:liste de bloc
+description:
+renvoie une liste de bloc donc l'image decoupait selon un ordre
+
+fichier 3: enregistrement_lecture_image
+(1)
+csv_to_blocks: parametre: un fichier csv return: liste de bloc
+description:
+convertie un fichier csv en une liste de bloc 
+
+
+(2)
+bloc_to_image: parametre: nouvelle_image , liste de bloc return: une image
+description:
+convertie un bloc en une image et l'enregistre
+
+(3)
+CSV_to_Image: parametre:fichier_csv, nouvelle_image return:image
+description:
+convertie un fichier csv en une image
+
+(4)
+bloc_to_csv: parametre:liste_bloc et un fichier_csv return: un fichier csv
+
+(5)
+image_to_csv: parametre: liste de bloc et un fichier_csv return None
+description:
+convertie une image en un document csv
+
+Fichier 4: image_rec
+fichier qui relie le programme a mon projet
+
+(1) commande 1  : python image_rec.py ./Images/fichier.png ordre nouvelle_image enregistre-png
+
+parametre: image , ordre , nouvelle_image enregistre-png
+description:
+enregistre une image png apres lui avoir appliquer l'algo recurcive
+
+Exemple: python image_rec.py ./Images/calbuth.png 3 calbuth_ordre_3 enregistre-png
+
+(2) commande 2 :python image_rec.py image ordre nouveau_fichier_csv  enregistre-csv
+
+parametre: image , ordre , nouvelle_image enregistre-csv
+Description:
+enregistre une image png dans un document csv 
+
+Exemple: python image_rec.py ./Images/calbuth.png 3 csv_calbuth_3 enregistre-csv
+
+(3) commande 3 : python image_rec.py chemin_vers_image ordre affiche-png 
+
+parametre  : chemin vers image , ordre affiche-png
+Description
+affiche un document png decoupait selon lordre apres avoir appliquer l'algo_rec
+
+Exemple: python image_rec.py ./Images/joconde.png 3 affiche-png
+
+affiche la joconde a l'ordre 3
+
+
+(4) commande 4 : python image_rec.py document_csv affiche-csv
+parametre : chemin vers fichier csv 
+Description:
+affiche un document csv 
+
+Exemple : python image_rec.py ./Images/mystere.csv affiche-csv
+
+affiche le document mystere
diff --git a/projet-ayoub-buyhari/__pycache__/Bloc.cpython-310.pyc b/projet-ayoub-buyhari/__pycache__/Bloc.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..3521853df1df4fe36c68205822fa45a315ddc632
Binary files /dev/null and b/projet-ayoub-buyhari/__pycache__/Bloc.cpython-310.pyc differ
diff --git a/projet-ayoub-buyhari/__pycache__/Bloc.cpython-312.pyc b/projet-ayoub-buyhari/__pycache__/Bloc.cpython-312.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..cae129fa1efdcc5b226af93d898c1d2193a91638
Binary files /dev/null and b/projet-ayoub-buyhari/__pycache__/Bloc.cpython-312.pyc differ
diff --git a/projet-ayoub-buyhari/__pycache__/Decoupage.cpython-310.pyc b/projet-ayoub-buyhari/__pycache__/Decoupage.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..02e4435687c0373c9f2ec3a4f91f3e824269ce0f
Binary files /dev/null and b/projet-ayoub-buyhari/__pycache__/Decoupage.cpython-310.pyc differ
diff --git a/projet-ayoub-buyhari/__pycache__/Decoupage.cpython-312.pyc b/projet-ayoub-buyhari/__pycache__/Decoupage.cpython-312.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..97e1a93d485aa95fad680e7301042dd428227d92
Binary files /dev/null and b/projet-ayoub-buyhari/__pycache__/Decoupage.cpython-312.pyc differ
diff --git a/projet-ayoub-buyhari/__pycache__/Image_recursif b/projet-ayoub-buyhari/__pycache__/Image_recursif
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/projet-ayoub-buyhari/__pycache__/algo_rec.cpython-310.pyc b/projet-ayoub-buyhari/__pycache__/algo_rec.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5c2f6c2d8f66dc84d8407538688e71d57f18d71e
Binary files /dev/null and b/projet-ayoub-buyhari/__pycache__/algo_rec.cpython-310.pyc differ
diff --git a/projet-ayoub-buyhari/__pycache__/algo_rec.cpython-312.pyc b/projet-ayoub-buyhari/__pycache__/algo_rec.cpython-312.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..1ac634a9fdcc9a6d29b782b89102b915e35e2092
Binary files /dev/null and b/projet-ayoub-buyhari/__pycache__/algo_rec.cpython-312.pyc differ
diff --git a/projet-ayoub-buyhari/__pycache__/enregistrement_lecture_image.cpython-310.pyc b/projet-ayoub-buyhari/__pycache__/enregistrement_lecture_image.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..2e49e4a2680a3b8c550199f6e39706049c44f843
Binary files /dev/null and b/projet-ayoub-buyhari/__pycache__/enregistrement_lecture_image.cpython-310.pyc differ
diff --git a/projet-ayoub-buyhari/__pycache__/enregistrement_lecture_image.cpython-312.pyc b/projet-ayoub-buyhari/__pycache__/enregistrement_lecture_image.cpython-312.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..2c2b80b208101317e3ceb40f4915291391edb11d
Binary files /dev/null and b/projet-ayoub-buyhari/__pycache__/enregistrement_lecture_image.cpython-312.pyc differ
diff --git a/projet-ayoub-buyhari/algo_rec.py b/projet-ayoub-buyhari/algo_rec.py
new file mode 100644
index 0000000000000000000000000000000000000000..57d73139ff687aafbdba12e34f043aa9d7f84291
--- /dev/null
+++ b/projet-ayoub-buyhari/algo_rec.py
@@ -0,0 +1,29 @@
+from Bloc import Bloc
+from Decoupage import *
+from PIL import Image , ImageDraw
+from enregistrement_lecture_image import *
+
+
+def image_rec(image_: str, ordre: int):
+    if ordre != 0:
+        bloc = image_to_block(image_)
+        sous_blocs = divise_bloc(image_, bloc, ordre)  
+        image = Image.open(image_).convert("RGB")
+        draw = ImageDraw.Draw(image)
+        for sous_bloc in sous_blocs:
+            px_hg = sous_bloc.px_hg
+            px_bd = sous_bloc.px_bd
+            couleur = sous_bloc.couleur
+            draw.rectangle([px_hg, px_bd], fill=couleur)
+        return divise_bloc(image_, bloc, ordre) 
+    else:
+        bloc = image_to_block(image_)
+        couleur = couleur_moyenne_image(image_) 
+        bloc.couleur = couleur
+        image = Image.open(image_).convert("RGB")
+        draw = ImageDraw.Draw(image)
+        px_hg = bloc.px_hg
+        px_bd = bloc.px_bd
+        couleur = bloc.couleur
+        draw.rectangle([px_hg, px_bd], fill=couleur)
+        return bloc
\ No newline at end of file
diff --git a/projet-ayoub-buyhari/csv/test.csv.csv b/projet-ayoub-buyhari/csv/test.csv.csv
new file mode 100644
index 0000000000000000000000000000000000000000..d401aea267a5575b8a28f6d1536f04eb1816c8bd
--- /dev/null
+++ b/projet-ayoub-buyhari/csv/test.csv.csv
@@ -0,0 +1,64 @@
+0,0,32,32,234,209,110
+32,0,64,32,198,176,93
+0,32,32,64,225,200,106
+32,32,64,64,176,157,86
+64,0,96,32,198,176,93
+96,0,128,32,177,157,86
+64,32,96,64,164,150,108
+96,32,128,64,205,190,139
+0,64,32,96,207,184,97
+32,64,64,96,145,129,89
+0,96,32,128,179,159,94
+32,96,64,128,123,103,81
+64,64,96,96,184,167,125
+96,64,128,96,124,100,82
+64,96,96,128,47,37,32
+96,96,128,128,90,81,71
+128,0,160,32,164,142,80
+160,0,192,32,176,153,83
+128,32,160,64,201,180,139
+160,32,192,64,143,116,83
+192,0,224,32,233,207,109
+224,0,256,32,236,210,111
+192,32,224,64,234,208,110
+224,32,256,64,236,210,111
+128,64,160,96,124,100,84
+160,64,192,96,111,87,76
+128,96,160,128,158,146,120
+160,96,192,128,82,70,59
+192,64,224,96,176,153,84
+224,64,256,96,236,210,111
+192,96,224,128,129,116,72
+224,96,256,128,236,210,111
+0,128,32,160,110,97,56
+32,128,64,160,159,123,105
+0,160,32,192,18,12,7
+32,160,64,192,48,39,32
+64,128,96,160,135,102,89
+96,128,128,160,113,96,78
+64,160,96,192,181,156,117
+96,160,128,192,136,76,70
+0,192,32,224,26,1,0
+32,192,64,224,0,0,0
+0,224,32,256,124,1,1
+32,224,64,256,0,0,0
+64,192,96,224,82,73,59
+96,192,128,224,154,129,104
+64,224,96,256,0,0,0
+96,224,128,256,104,91,80
+128,128,160,160,167,148,115
+160,128,192,160,96,72,62
+128,160,160,192,127,67,66
+160,160,192,192,92,56,52
+192,128,224,160,183,162,88
+224,128,256,160,236,210,111
+192,160,224,192,93,63,33
+224,160,256,192,233,207,109
+128,192,160,224,135,103,91
+160,192,192,224,27,21,19
+128,224,160,256,69,65,58
+160,224,192,256,4,3,3
+192,192,224,224,83,4,4
+224,192,256,224,191,106,58
+192,224,224,256,141,0,0
+224,224,256,256,178,2,1
diff --git a/projet-ayoub-buyhari/csv/test2.csv b/projet-ayoub-buyhari/csv/test2.csv
new file mode 100644
index 0000000000000000000000000000000000000000..45ce3f0625154f7aad47d7972f93455fbde53912
--- /dev/null
+++ b/projet-ayoub-buyhari/csv/test2.csv
@@ -0,0 +1 @@
+0,0,256,256,140,112,73

diff --git a/projet-ayoub-buyhari/enregistrement_lecture_image.py b/projet-ayoub-buyhari/enregistrement_lecture_image.py
new file mode 100644
index 0000000000000000000000000000000000000000..6515668e9edae61531463b9ff4e06e199396218c
--- /dev/null
+++ b/projet-ayoub-buyhari/enregistrement_lecture_image.py
@@ -0,0 +1,122 @@
+#BUHYARI Ayoub
+from Bloc import Bloc
+from PIL import Image, ImageDraw
+import csv
+from algo_rec import * 
+def cvs_to_blocks(fichier_csv:str) -> list[Bloc]:
+    """convertie un fichier csv en un block
+
+    Précondition : fichier_csv le chemin d'un fichier du type .csv
+    Exemple(s) :
+    $$$ 
+
+    """
+    liste_bloc = []
+    with open(fichier_csv, 'r') as fichier:
+        for ligne in fichier:
+            ligne = ligne.strip().split(',')
+            if len(ligne) == 7:
+                valeur_ligne = [int(valeur) for valeur in ligne]
+                px_hg = (valeur_ligne[0],valeur_ligne[1])
+                px_bd = (valeur_ligne[2],valeur_ligne[3])
+                couleur = (valeur_ligne[4],valeur_ligne[5],valeur_ligne[6])
+                bloc = Bloc(px_hg,px_bd,couleur)
+                liste_bloc.append(bloc)
+    return liste_bloc
+
+def bloc_to_image(nouvelle_image: str, liste_bloc) -> Image:
+    """
+    Crée une image et convertit une liste de bloc en une image.
+
+    Précondition : 
+    """
+    width, height = 256, 256
+    image = Image.new("RGB", (width, height), "black")
+    draw = ImageDraw.Draw(image)
+    if isinstance(liste_bloc, Bloc):  
+        draw.rectangle([liste_bloc.px_hg, liste_bloc.px_bd], fill=liste_bloc.couleur)
+    else:
+        for bloc in liste_bloc:
+            draw.rectangle([bloc.px_hg, bloc.px_bd], fill=bloc.couleur)
+    image.show()
+    return image.save("./image_recursif/" + nouvelle_image + ".png", "PNG")
+
+
+
+#PASSER D'UN FICHIER CSV A UNE IMAGE
+def CSV_to_Image(fichier_csv, nouvelle_image) ->Image:
+    """
+    Convertit un fichier CSV en une image.
+
+    precondition: fichier_csv (str): Le chemin vers le fichier CSV.
+                  nouvelle_image: chemin de la nouvelle image du style "nouvelle_image.png"
+    """
+    liste_bloc = cvs_to_blocks(fichier_csv)
+    
+
+    max_x = max(bloc.px_bd[0] for bloc in liste_bloc)
+    max_y = max(bloc.px_bd[1] for bloc in liste_bloc)
+    
+    width = max_x + 1
+    height = max_y + 1
+    
+    # Créer une nouvelle image
+    image = Image.new("RGB", (width, height), "black")
+    
+    # Dessiner les blocs sur l'image
+    draw = ImageDraw.Draw(image)
+    for bloc in liste_bloc:
+        draw.rectangle([bloc.px_hg, bloc.px_bd], fill=bloc.couleur)
+    
+    image.show()
+    
+    return image.save(nouvelle_image, "PNG")
+#######################################################################################################################
+    
+def bloc_to_csv(liste_bloc: list[Bloc], fichier_csv: str) -> None:
+    """
+    Convertit une liste de blocs dans un document CSV.
+    """
+    with open("./csv/" + fichier_csv, 'w') as fichier:
+        writer = csv.writer(fichier)
+        for bloc in liste_bloc:
+            res = []
+            couleur = bloc.couleur
+            px_hg = bloc.px_hg
+            px_bd = bloc.px_bd
+            res.append(px_hg[0])
+            res.append(px_hg[1])
+            res.append(px_bd[0])
+            res.append(px_bd[1])
+            res.append(couleur[0])
+            res.append(couleur[1])
+            res.append(couleur[2])
+            writer.writerow(res)
+
+#PASSER D'UNE IMAGE A UN DOCUMENT CSV
+def image_to_csv(liste_bloc:list[Bloc] , fichier_csv:str)-> None:
+    """
+enregistre l'image dans un document CSV que l'on souhaite cree
+precondition: fichier csv du styler "fichier_csv.csv"
+"""
+    bloc_to_csv(liste_bloc,fichier_csv)
+    
+def image_to_csv_bloc(bloc:Bloc,fichier_csv:str)->None:
+    """
+convertie une image en csv
+"""
+    with open("./csv/" + fichier_csv, 'w') as fichier:
+        writer = csv.writer(fichier)
+        res = []
+        couleur = bloc.couleur
+        px_hg = bloc.px_hg
+        px_bd = bloc.px_bd
+        res.append(px_hg[0])
+        res.append(px_hg[1])
+        res.append(px_bd[0])
+        res.append(px_bd[1])
+        res.append(couleur[0])
+        res.append(couleur[1])
+        res.append(couleur[2])
+        writer.writerow(res)
+
diff --git a/projet-ayoub-buyhari/image_rec.py b/projet-ayoub-buyhari/image_rec.py
new file mode 100644
index 0000000000000000000000000000000000000000..a9e5f22bf5c748c5a43b7dbf4308b53add162f2b
--- /dev/null
+++ b/projet-ayoub-buyhari/image_rec.py
@@ -0,0 +1,76 @@
+#BUHYARI Ayoub
+#ligne de commande
+from algo_rec import *
+from enregistrement_lecture_image import *
+from Decoupage import *
+from PIL import * 
+if __name__ == "__main__":
+    """
+applique algorithme recurcive a une image selon un ordre et l'enregistre dans une nouvelle image
+"""
+    import sys
+    if len(sys.argv) != 5:
+        print("usage: image_rec.py image ordre nouvelle_image enregistre-png")
+    else:
+        image, ordre, nouvelle_image, mode = sys.argv[1:]
+        if mode == "enregistre-png":
+            image = str(image)
+            ordre = int(ordre)
+            nouvelle_image = str(nouvelle_image)
+            bloc = image_rec(image,ordre)
+            bloc_to_image(nouvelle_image, bloc)
+            
+if __name__ == "__main__":
+    """"
+    Applique un algorithme récursif à une image selon un ordre et l'enregistre dans un document CSV.
+    """
+    import sys
+    if len(sys.argv) != 5:
+        print("usage: image_rec.py image ordre nouveau_fichier_csv enregistre-csv")
+    else:
+        image, ordre, nouveau_fichier_csv, mode = sys.argv[1:]
+        if mode == "enregistre-csv":
+            image = str(image)
+            ordre = int(ordre)
+            nouveau_fichier_csv = str(nouveau_fichier_csv)
+            if ordre >0:
+                nouveau_fichier_csv = str(nouveau_fichier_csv)
+                bloc = image_rec(image, ordre)
+                image_to_csv(bloc, nouveau_fichier_csv + ".csv")
+            elif ordre==0:
+                bloc = image_rec(image, ordre)
+                image_to_csv_bloc(bloc,nouveau_fichier_csv)
+             
+            
+if __name__ == "__main__":
+    """
+applique algorithme recurcive a une image selon un ordre l'affiche
+
+"""
+    import sys
+    if len(sys.argv) != 4:
+        print("usage: image_rec.py image ordre affiche-png")
+    else:
+        image, ordre, mode = sys.argv[1:]
+        if mode == "affiche-png":
+            image = str(image)
+            ordre = int(ordre)
+            res = image_rec(image, ordre)
+            afficher_liste_blocs(res)
+        else:
+            print("usage: image_rec.py image ordre affiche-png")
+            
+
+if __name__ == "__main__":
+    """
+affiche un fichier csv
+"""
+    import sys
+    if len(sys.argv) != 3:
+        print("usage: image_rec.py fichier_csv affiche-csv")
+    else: 
+        fichier_csv,mode = sys.argv[1:]
+        if mode == "affiche-csv":
+            fichier_csv = str(fichier_csv)
+            res = cvs_to_blocks(fichier_csv)
+            afficher_liste_blocs(res)
diff --git a/projet-ayoub-buyhari/image_recursif/belfadel.png b/projet-ayoub-buyhari/image_recursif/belfadel.png
new file mode 100644
index 0000000000000000000000000000000000000000..1c0af978a995270ccb00c5da933c364b39c2b5c4
Binary files /dev/null and b/projet-ayoub-buyhari/image_recursif/belfadel.png differ
diff --git a/projet-ayoub-buyhari/image_recursif/csv_calbuth_3.png b/projet-ayoub-buyhari/image_recursif/csv_calbuth_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..1c0af978a995270ccb00c5da933c364b39c2b5c4
Binary files /dev/null and b/projet-ayoub-buyhari/image_recursif/csv_calbuth_3.png differ