diff --git a/.gradle/7.4/fileHashes/resourceHashesCache.bin b/.gradle/7.4/fileHashes/resourceHashesCache.bin
new file mode 100644
index 0000000000000000000000000000000000000000..9bff27bafb7b6100eed2008b7aa679c9455def16
Binary files /dev/null and b/.gradle/7.4/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe
new file mode 100644
index 0000000000000000000000000000000000000000..b9647d18a023b65db35462985ee38f79494d3efe
Binary files /dev/null and b/.gradle/file-system.probe differ
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000000000000000000000000000000000000..e588a89280298b674f6ad86639a14bf2b86c42a9
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+ff
\ No newline at end of file
diff --git a/build/classes/java/main/AntiFire$Position.class b/build/classes/java/main/AntiFire$Position.class
new file mode 100644
index 0000000000000000000000000000000000000000..7547f4bafec835a73c42408a68545ec53ad10ee0
Binary files /dev/null and b/build/classes/java/main/AntiFire$Position.class differ
diff --git a/build/classes/java/main/AntiFire.class b/build/classes/java/main/AntiFire.class
new file mode 100644
index 0000000000000000000000000000000000000000..edf3af720839d02a3d477b8002d211e1d429afc4
Binary files /dev/null and b/build/classes/java/main/AntiFire.class differ
diff --git a/build/classes/java/main/App$1.class b/build/classes/java/main/App$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..98d51f802497deae0e1387a24d43001df1e48c74
Binary files /dev/null and b/build/classes/java/main/App$1.class differ
diff --git a/build/classes/java/main/App.class b/build/classes/java/main/App.class
new file mode 100644
index 0000000000000000000000000000000000000000..d295b944a9625d1a7a2f892180b64733cbc7ae54
Binary files /dev/null and b/build/classes/java/main/App.class differ
diff --git a/build/classes/java/main/Clouds.class b/build/classes/java/main/Clouds.class
new file mode 100644
index 0000000000000000000000000000000000000000..9ed13d4bd20ab64d05aa9707562c6eb4616a9296
Binary files /dev/null and b/build/classes/java/main/Clouds.class differ
diff --git a/build/classes/java/main/Grid.class b/build/classes/java/main/Grid.class
new file mode 100644
index 0000000000000000000000000000000000000000..abc72c01fbe72954e14638fa7e2b6bffc14378ed
Binary files /dev/null and b/build/classes/java/main/Grid.class differ
diff --git a/build/classes/java/main/Model.class b/build/classes/java/main/Model.class
new file mode 100644
index 0000000000000000000000000000000000000000..e8275b1856b942724c1e257e1e9c8263e2fb5cef
Binary files /dev/null and b/build/classes/java/main/Model.class differ
diff --git a/build/classes/java/main/MotoFighter.class b/build/classes/java/main/MotoFighter.class
new file mode 100644
index 0000000000000000000000000000000000000000..a6e726acf81de951c94e8a90476341fc1c41a76b
Binary files /dev/null and b/build/classes/java/main/MotoFighter.class differ
diff --git a/build/classes/java/main/Position.class b/build/classes/java/main/Position.class
new file mode 100644
index 0000000000000000000000000000000000000000..919933142d440b6278f5b21b1c80bfe4c0edbdd1
Binary files /dev/null and b/build/classes/java/main/Position.class differ
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
new file mode 100644
index 0000000000000000000000000000000000000000..a03e2a7667f4aee40a96aa3d95994982de790be4
Binary files /dev/null and b/build/tmp/compileJava/previous-compilation-data.bin differ
diff --git a/src/main/java/AntiFire.java b/src/main/java/AntiFire.java
new file mode 100644
index 0000000000000000000000000000000000000000..c42dd1c803e325e4ab4d2a8928c9f7ee2bb46395
--- /dev/null
+++ b/src/main/java/AntiFire.java
@@ -0,0 +1,30 @@
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+public abstract class AntiFire {
+    Set<Position> fires = new HashSet<>();
+    Grid grid;
+
+    int colCount, rowCount;
+
+    public abstract void activation();
+    public abstract Position activateFighter(Position position);
+    public abstract List<Position> next(Position position);
+    public abstract Position moveTowardFire(Position position);
+
+
+
+    public  void extinguish(Position position){
+        fires.remove(position);
+        grid.paint(position.row, position.col);
+    }
+    public Position randomPosition() {
+        return new Position((int) (Math.random()*rowCount), (int) (Math.random()*colCount));
+    }
+
+
+    public record Position(int row, int col){
+    }
+
+}
diff --git a/src/main/java/Clouds.java b/src/main/java/Clouds.java
new file mode 100644
index 0000000000000000000000000000000000000000..bbbf9f92a2491d679802336fb7e0f82eff9cd96c
--- /dev/null
+++ b/src/main/java/Clouds.java
@@ -0,0 +1,5 @@
+import java.util.List;
+
+public class Clouds {
+
+}
diff --git a/src/main/java/MotoFighter.java b/src/main/java/MotoFighter.java
new file mode 100644
index 0000000000000000000000000000000000000000..c3d9186a8f12474562c53fe28c49ce67b1c21d92
--- /dev/null
+++ b/src/main/java/MotoFighter.java
@@ -0,0 +1,63 @@
+import java.util.*;
+
+public class MotoFighter extends AntiFire {
+    List<Position> mfNewPositions;
+    List<Position> motofighter = new ArrayList<>();
+
+
+
+    @Override
+    public void activation() {
+        mfNewPositions = new ArrayList<>();
+        for(Position mF : motofighter){
+            Position newPosition = activateFighter(mF);
+            grid.paint(mF.row(), mF.row());
+            grid.paintMF(newPosition.row(), newPosition.col());
+            mfNewPositions.add(newPosition);
+        }
+        motofighter = mfNewPositions;
+    }
+
+    @Override
+    public Position activateFighter(Position position) {
+        Position randomPosition = moveTowardFire(position);
+        //next(position).get((int) (Math.random()*next(position).size()));
+        List<Position> nextFires = next(randomPosition).stream().filter(fires::contains).toList();
+        extinguish(randomPosition);
+        for (Position fire : nextFires)
+            extinguish(fire);
+        return randomPosition;
+    }
+
+    @Override
+    public List<Position> next(Position position) {
+        List<Position> list = new ArrayList<>();
+        if(position.row()>0) list.add(new Position(position.row()-2, position.col()));
+        if(position.col()>0) list.add(new Position(position.row(), position.col()-2));
+        if(position.row()<rowCount-1) list.add(new Position(position.row()+2, position.col()));
+        if(position.col()<colCount-1) list.add(new Position(position.row(), position.col()+2));
+        return list;
+    }
+
+    @Override
+    public Position moveTowardFire(Position position) {
+        Queue<Position> toVisit = new LinkedList<>();
+        Set<Position> seen = new HashSet<>();
+        HashMap<Position, Position> firstMove = new HashMap<>();
+        toVisit.addAll(next(position));
+        for(Position initialMove : toVisit)
+            firstMove.put(initialMove,initialMove);
+        while(!toVisit.isEmpty()){
+            Position current = toVisit.poll();
+            if(fires.contains(current))
+                return firstMove.get(current);
+            for(Position adjacent : next(current)){
+                if(seen.contains(adjacent)) continue;
+                toVisit.add(adjacent);
+                seen.add(adjacent);
+                firstMove.put(adjacent, firstMove.get(current));
+            }
+        }
+        return position;
+    }
+}
diff --git a/src/main/java/Position.java b/src/main/java/Position.java
new file mode 100644
index 0000000000000000000000000000000000000000..47d44a136003ca44d3aba0f9d14a213dc4a2307a
--- /dev/null
+++ b/src/main/java/Position.java
@@ -0,0 +1,2 @@
+public record Position(int row , int col) {
+}