diff --git a/Makefile b/Makefile
index 19e58f7ffc6e9f735fc0c2044608c5dd943a7c03..7c05fe51a1b74208aa4d919384a1669fa8f09a20 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-CFLAGS = -std=c99 -O2 -W -Wall -g
+CFLAGS = -std=c99 -O2 -W -Wall -g 
 
 .PHONY: all clean
 
@@ -11,7 +11,7 @@ test: main
 	./runTests.sh
 
 main: main.c libs/jogador.o libs/tabuleiro.o libs/grafo.o libs/vertice.o libs/filha.o libs/lista.o libs/no.o
-	$(CC) $(CFLAGS) -o $@ $^
+	$(CC) $(CFLAGS) -o $@ $^ -lm
 
 clean:
 	$(RM) *.o
diff --git a/main.c b/main.c
index 67528217503bdda091e2cc64e4e63993ddea065a..8d59c2b9591fc38e6e2616d8fd68c092533d8286 100644
--- a/main.c
+++ b/main.c
@@ -3,20 +3,40 @@
 #include <stdio.h>
 #include <stdbool.h>
 #include <time.h>
+#include <math.h>
 #include "libs/tabuleiro.h"
 #include "libs/no.h"
 #include "libs/lista.h"
 #include "libs/grafo.h"
 #include "libs/jogador.h"
 
-int main() {
+int main(int argc, char *argv[]) {
     Tblr t = criaTblr();
     // Aloca o tabuleiro em um único array em vez de um "array de arrays"
     if(!leTblr(t)) {
         puts("Erro na leitura do tabuleiro");
         return -1;
     }
-	
+    
+    // Se colocar UMA e APENAS UMA coisa depois do main
+    if(argc == 2) {
+        // Calcula e imprime o número mínimo e máximo de jogadas
+        if(t->x != t->y) {
+            puts("Apenas funciona para tabuleiros quadrados");
+        } else {
+            // Max é 2n + sqrt(2k)n + k
+            double max = 2*(t->x) + (sqrt(2*t->cores))*(t->x) + t->cores;
+            printf("\tNúmero máximo de jogadas: %f\n", max);
+            // Min é válido para 2 <= k <= n²
+            // Min é sqrt(k - 1)n/2 - k/2
+            if(t->cores >= 2 && t->cores <= (t->x*t->x)) {
+                double n2 = t->x/2;
+                double min = (sqrt(t->cores - 1)*t->x/2) - (t->cores/2);
+                printf("\tNúmero mínimo de jogadas: %f\n", min);
+            }
+        }
+    }
+
     //TODO imprimindo o tabuleiro
 //    imprimeTblr(t);