diff --git a/Algos_1/main.c b/Algos_1/main.c
index d7a567c8b2b8afa81db378e3ac4398bd9ffc8a54..13756bf8cc3aa8134d668e402174e5157406385f 100644
--- a/Algos_1/main.c
+++ b/Algos_1/main.c
@@ -4,22 +4,23 @@
 #include "utils.h"
 
 int main(int argc, char **argv){
-    if(argc!=3){
-        printf("Usage: ./tri <option> <input.txt>\n");
+    if(argc<3){
+        printf("Usage: ./tri <option> <input.txt> d \n");
         exit(1);
     }
 
     long tab[100];
-    int n = readToTab(tab, argv[2]);
     struct data data;
     initData(&data);
-    printf("Base      : ");
-    for(int i  = 0; i<n; i++){
-        printf("%ld,", tab[i]);
-    }
-    printf("\n");
+    
 
     if((strcmp(argv[1], "--insertion") == 0) || strcmp(argv[1], "-i")== 0){
+        int n = readToTab(tab, argv[2]);
+        printf("Base      : ");
+        for(int i  = 0; i<n; i++){
+            printf("%ld,", tab[i]);
+        }
+        printf("\n");
         triInsertion(tab, n);
         printf("Insertion : ");
         for(int i  = 0; i<n; i++){
@@ -28,6 +29,12 @@ int main(int argc, char **argv){
         printf("\n");
     }
     else if(strcmp(argv[1], "--fusion")== 0 || strcmp(argv[1], "-f")== 0){
+        int n = readToTab(tab, argv[2]);
+        printf("Base      : ");
+        for(int i  = 0; i<n; i++){
+            printf("%ld,", tab[i]);
+        }
+        printf("\n");
         triFusion(tab, n);
         printf("Fusion    : ");
         for(int i  = 0; i<n; i++){
@@ -36,6 +43,12 @@ int main(int argc, char **argv){
         printf("\n");
     }
     else if((strcmp(argv[1], "--rapide")== 0) || strcmp(argv[1], "-r")== 0){
+        int n = readToTab(tab, argv[2]);
+        printf("Base      : ");
+        for(int i  = 0; i<n; i++){
+            printf("%ld,", tab[i]);
+        }
+        printf("\n");
         triRapide(tab, n);
         printf("Rapide    : ");
         for(int i  = 0; i<n; i++){
@@ -45,6 +58,12 @@ int main(int argc, char **argv){
     }
     else if (strcmp(argv[1], "-a") == 0)
     {
+        int n = readToTab(tab, argv[2]);
+        printf("Base      : ");
+        for(int i  = 0; i<n; i++){
+            printf("%ld,", tab[i]);
+        }
+        printf("\n");
         triInsertion(tab, n);
         printf("Insertion : ");
         for(int i  = 0; i<n; i++){
@@ -64,8 +83,37 @@ int main(int argc, char **argv){
         }
         printf("\n");
     }
+    else if (strcmp(argv[1], "-g") == 0)
+    {
+        if(argc<3){
+            printf("Usage: ./tri -g <output.txt> <size>\n");
+            exit(1);
+        }
+        long *tab;
+    
+        size_t t = 0;
+        if(argc==3){
+            t  = NULL;
+        }
+        else{
+            t = atoi(argv[3]);
+        }
+        size_t l = 0;
+        int fd = open(argv[2], O_RDWR | O_CREAT);
+        tab = generate_tab(t, &l);
+        dup2(fd, 1);
+        for(int i  = 0; i<t; i++){
+
+            printf("%ld ", tab[i]);
+        }
+        printf(".");
+        printf("\n");
+        close(fd);
+        
+       // free(tab);
+    } 
     else{
-        printf("Usage: ./tri <option> <input.txt>\n");
+        printf("Usage: ./tri <option> <input.txt> f\n");
     }
     return 0;
 }
\ No newline at end of file
diff --git a/Algos_1/tri b/Algos_1/tri
deleted file mode 100755
index b1c3b93122fbcac33f253945a94a3c5ed4910bf4..0000000000000000000000000000000000000000
Binary files a/Algos_1/tri and /dev/null differ
diff --git a/Algos_1/utils.c b/Algos_1/utils.c
index f8bb284abf5a4ac462499b3200578600b5b0af3a..f39e30fb527645b57d57432eeed9ff0354a215a2 100644
--- a/Algos_1/utils.c
+++ b/Algos_1/utils.c
@@ -40,16 +40,23 @@ void initData(struct data* d){
     d->write = 0;
 }
 
-void generate_tab(long* t, int nb){
-    int taille_tab = 0;
-    if(nb == NULL){
-        taille_tab = (int)(random()+1)%100;
+long* generate_tab(size_t nb, size_t *l){
+    long* t;
+    size_t taille_tab = 0;
+    if(l == NULL){
+        taille_tab = (size_t)(random()+1)%100;
     }
     else{
         taille_tab = nb;
     }
-
-    for(int i = 0; taille_tab<taille_tab; i++){
-
+    t = malloc(sizeof(long)*taille_tab);
+    memset(t, 0, taille_tab);
+    *l= taille_tab;
+    size_t i = 0;
+    for(i = 0; i<taille_tab; i++){
+        long p =  (long)(rand()%1000);
+        t[i] = p;
     }
+    
+    return t;
 }
\ No newline at end of file
diff --git a/Algos_1/utils.h b/Algos_1/utils.h
index a9ce63273a3c2e8790b1379dae3e50b4c963b5d4..e1bdb07811a3e043a4cde44ffd2507395c730650 100644
--- a/Algos_1/utils.h
+++ b/Algos_1/utils.h
@@ -18,4 +18,5 @@ struct data {
 };
 
 int readToTab(long* tab, char* file);
-void initData(struct data* d);
\ No newline at end of file
+void initData(struct data* d);
+long* generate_tab(size_t nb, size_t* l);
\ No newline at end of file