diff --git a/OUTPUT.txt b/OUTPUT.txt
new file mode 100644
index 0000000000000000000000000000000000000000..da9f9dd1675c809bcaf3a23be8252321447677a4
--- /dev/null
+++ b/OUTPUT.txt
@@ -0,0 +1,1015 @@
+Expanding: (3, 26) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (2, 26) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (3, 27) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (3, 28) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (2, 28) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (3, 27) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (2, 28) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (1, 28) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (3, 28) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (2, 27) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (3, 28) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (3, 27) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (3, 27) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (2, 27) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Moving to (1, 27) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (3, 27) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (2, 26) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (2, 28) | New rewards left: frozenset({(10, 1), (11, 28)})
+Expanding: (3, 27) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (2, 27) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (8, 19) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (8, 19) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (1, 27) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (2, 27) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (1, 26) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (1, 28) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (2, 27) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (11, 19) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (11, 18) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (11, 20) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (1, 28) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (2, 28) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (1, 27) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (2, 28) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (3, 24) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Moving to (4, 24) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (3, 23) | New rewards left: frozenset({(10, 1), (11, 28)})
+Expanding: (4, 24) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (11, 20) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (2, 26) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (2, 26) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (2, 27) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (2, 27) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (2, 27) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (1, 27) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (3, 27) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (2, 26) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (2, 28) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (3, 27) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (2, 27) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (11, 18) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (11, 17) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (11, 19) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (11, 20) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (11, 20) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (8, 19) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (9, 19) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (8, 18) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (8, 20) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (8, 19) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (8, 21) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (9, 20) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (9, 20) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (11, 20) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (10, 20) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (11, 19) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (11, 21) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (10, 20) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (9, 20) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (11, 20) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (11, 22) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (6, 23) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (5, 23) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (7, 23) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (8, 15) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Moving to (9, 15) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (8, 14) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (8, 16) | New rewards left: frozenset({(10, 1), (11, 28)})
+Expanding: (9, 15) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (8, 17) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (8, 17) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (8, 21) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (9, 21) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (8, 20) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (8, 22) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (8, 21) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (8, 23) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (8, 23) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (8, 25) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (7, 25) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (9, 25) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 20) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (8, 20) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (10, 20) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (9, 19) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (9, 21) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 20) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 22) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 22) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 24) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 26) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (9, 25) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (9, 27) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 14) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Moving to (8, 14) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (9, 13) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (9, 15) | New rewards left: frozenset({(10, 1), (11, 28)})
+Expanding: (9, 16) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (9, 16) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (10, 15) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (11, 16) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (8, 23) | Remaining rewards: frozenset({(10, 1)})
+Moving to (7, 23) | New rewards left: frozenset({(10, 1)})
+Moving to (9, 23) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 22) | New rewards left: frozenset({(10, 1)})
+Expanding: (9, 24) | Remaining rewards: frozenset({(10, 1)})
+Moving to (9, 23) | New rewards left: frozenset({(10, 1)})
+Moving to (9, 25) | New rewards left: frozenset({(10, 1)})
+Expanding: (8, 22) | Remaining rewards: frozenset({(10, 1)})
+Moving to (9, 22) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 21) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 23) | New rewards left: frozenset({(10, 1)})
+Expanding: (8, 22) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (9, 23) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (9, 23) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (9, 23) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 21) | Remaining rewards: frozenset({(10, 1)})
+Moving to (9, 21) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 20) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 22) | New rewards left: frozenset({(10, 1)})
+Expanding: (8, 21) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (9, 22) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (9, 22) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 20) | Remaining rewards: frozenset({(10, 1)})
+Moving to (9, 20) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 19) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 21) | New rewards left: frozenset({(10, 1)})
+Expanding: (8, 20) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (9, 21) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (9, 21) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 19) | Remaining rewards: frozenset({(10, 1)})
+Moving to (9, 19) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 18) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 20) | New rewards left: frozenset({(10, 1)})
+Expanding: (8, 19) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (9, 20) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (9, 20) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 18) | Remaining rewards: frozenset({(10, 1)})
+Moving to (8, 17) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 19) | New rewards left: frozenset({(10, 1)})
+Expanding: (9, 19) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 17) | Remaining rewards: frozenset({(10, 1)})
+Moving to (9, 17) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 16) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 18) | New rewards left: frozenset({(10, 1)})
+Expanding: (8, 17) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 16) | Remaining rewards: frozenset({(10, 1)})
+Moving to (9, 16) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 15) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 17) | New rewards left: frozenset({(10, 1)})
+Expanding: (8, 16) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (9, 17) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (9, 17) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 15) | Remaining rewards: frozenset({(10, 1)})
+Moving to (9, 15) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 14) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 16) | New rewards left: frozenset({(10, 1)})
+Expanding: (8, 15) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (9, 16) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (9, 16) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 14) | Remaining rewards: frozenset({(10, 1)})
+Moving to (9, 14) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 13) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 15) | New rewards left: frozenset({(10, 1)})
+Expanding: (8, 14) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (9, 15) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (9, 15) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 13) | Remaining rewards: frozenset({(10, 1)})
+Moving to (9, 13) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 12) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 14) | New rewards left: frozenset({(10, 1)})
+Expanding: (8, 13) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (9, 14) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (9, 14) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 12) | Remaining rewards: frozenset({(10, 1)})
+Moving to (8, 11) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 13) | New rewards left: frozenset({(10, 1)})
+Expanding: (9, 13) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (9, 13) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (11, 13) | Remaining rewards: frozenset({(10, 1)})
+Moving to (10, 13) | New rewards left: frozenset({(10, 1)})
+Moving to (11, 12) | New rewards left: frozenset({(10, 1)})
+Expanding: (8, 11) | Remaining rewards: frozenset({(10, 1)})
+Moving to (7, 11) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 10) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 12) | New rewards left: frozenset({(10, 1)})
+Expanding: (10, 13) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (10, 13) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (11, 12) | Remaining rewards: frozenset({(10, 1)})
+Moving to (10, 12) | New rewards left: frozenset({(10, 1)})
+Moving to (11, 13) | New rewards left: frozenset({(10, 1)})
+Expanding: (11, 12) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 10) | Remaining rewards: frozenset({(10, 1)})
+Moving to (8, 9) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 11) | New rewards left: frozenset({(10, 1)})
+Expanding: (10, 12) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 9) | Remaining rewards: frozenset({(10, 1)})
+Moving to (8, 10) | New rewards left: frozenset({(10, 1)})
+Expanding: (1, 9) | Remaining rewards: frozenset({(11, 28), (10, 1), (5, 28), (3, 28)})
+Expanding: (2, 26) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Moving to (1, 26) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (3, 26) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (2, 27) | New rewards left: frozenset({(10, 1), (11, 28)})
+Expanding: (3, 26) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (2, 26) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (2, 28) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (2, 28) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (3, 23) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Moving to (2, 23) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (4, 23) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (3, 24) | New rewards left: frozenset({(10, 1), (11, 28)})
+Expanding: (4, 23) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (3, 23) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (1, 23) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (2, 23) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (1, 22) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (1, 24) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (2, 23) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (2, 26) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (1, 26) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (3, 26) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (2, 27) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (3, 26) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (2, 26) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (2, 28) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (2, 28) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (11, 17) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (10, 17) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (11, 16) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (11, 18) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (10, 17) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (9, 17) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (11, 17) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (10, 16) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (11, 19) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (8, 18) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (8, 17) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (8, 19) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (8, 20) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (9, 17) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (8, 17) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (10, 17) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (9, 16) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (9, 19) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (10, 16) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (9, 16) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (11, 16) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (10, 15) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (10, 17) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (11, 19) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (11, 18) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (11, 20) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (11, 21) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (5, 23) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (4, 23) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (6, 23) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (5, 24) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (7, 23) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (7, 25) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (8, 25) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (7, 26) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (8, 14) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Moving to (9, 14) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (8, 13) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (8, 15) | New rewards left: frozenset({(10, 1), (11, 28)})
+Expanding: (9, 14) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (8, 16) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (8, 16) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (8, 20) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (9, 20) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (8, 19) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (8, 21) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (8, 20) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (8, 22) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 19) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (8, 19) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (9, 20) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 21) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 21) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 25) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 25) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 27) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (9, 26) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (9, 28) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (10, 20) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 13) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Moving to (8, 13) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (10, 13) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (9, 14) | New rewards left: frozenset({(10, 1), (11, 28)})
+Expanding: (10, 13) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Moving to (9, 13) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (11, 13) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (10, 12) | New rewards left: frozenset({(10, 1), (11, 28)})
+Expanding: (9, 15) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (9, 15) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (10, 12) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Moving to (11, 12) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (10, 13) | New rewards left: frozenset({(10, 1), (11, 28)})
+Expanding: (11, 13) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Moving to (10, 13) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (11, 12) | New rewards left: frozenset({(10, 1), (11, 28)})
+Expanding: (1, 6) | Remaining rewards: frozenset({(10, 1), (3, 28), (1, 14), (5, 28), (11, 28)})
+Expanding: (1, 8) | Remaining rewards: frozenset({(11, 28), (10, 1), (5, 28), (3, 28)})
+Moving to (1, 7) | New rewards left: frozenset({(11, 28), (10, 1), (5, 28), (3, 28)})
+Moving to (1, 9) | New rewards left: frozenset({(11, 28), (10, 1), (5, 28), (3, 28)})
+Expanding: (1, 9) | Remaining rewards: frozenset({(11, 28), (10, 1), (5, 28), (3, 28)})
+Expanding: (1, 21) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (2, 21) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (1, 20) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (1, 22) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (2, 21) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (1, 21) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (3, 21) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (3, 21) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (2, 21) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (4, 21) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (4, 21) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (3, 21) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (4, 20) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (4, 20) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (4, 19) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (4, 21) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (4, 21) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (3, 21) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (4, 19) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (3, 19) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (4, 18) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (4, 20) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (4, 20) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (1, 22) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (1, 22) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (1, 21) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (1, 23) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (2, 21) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (1, 23) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (1, 23) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (11, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (10, 17) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (11, 16) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (11, 18) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (10, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (9, 17) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (11, 17) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (10, 16) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (9, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (8, 17) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (10, 17) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (9, 16) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (8, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (1, 24) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (11, 18) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (1, 25) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (4, 18) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (3, 18) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (4, 19) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (10, 16) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (9, 16) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (11, 16) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (10, 15) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (10, 17) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (1, 26) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (1, 26) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (4, 19) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (9, 16) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (8, 16) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (10, 16) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (9, 15) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (9, 17) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (9, 16) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (10, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (10, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (1, 27) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (1, 27) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (8, 16) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (9, 16) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (8, 15) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (8, 17) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (8, 16) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (9, 16) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (8, 15) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (8, 17) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (8, 16) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (9, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (9, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (1, 22) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (1, 21) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (1, 23) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (1, 28) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (8, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (8, 17) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (8, 17) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (9, 16) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (8, 16) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (10, 16) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (9, 15) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (9, 17) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (9, 16) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (1, 23) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (1, 23) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (9, 17) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (9, 17) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (10, 16) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (9, 16) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (11, 16) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (10, 15) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (10, 17) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (10, 16) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (11, 17) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (10, 17) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (11, 16) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (11, 18) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (11, 17) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (1, 24) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (1, 28) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Moving to (2, 28) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (1, 27) | New rewards left: frozenset({(10, 1), (11, 28)})
+Expanding: (2, 28) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (8, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (9, 17) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (8, 16) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (8, 18) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (10, 17) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (10, 17) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (11, 18) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (1, 25) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (8, 18) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (9, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (8, 17) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (10, 17) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (9, 16) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (1, 26) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (1, 26) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (2, 27) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (10, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (9, 17) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (11, 17) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (10, 16) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (11, 18) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (11, 17) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (11, 19) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (1, 27) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (1, 27) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (11, 19) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (1, 28) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (3, 24) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (1, 28) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (2, 28) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (1, 27) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (2, 28) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (1, 22) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (1, 21) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (1, 23) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (1, 24) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (1, 23) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (1, 25) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (2, 27) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (11, 16) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (10, 16) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (11, 15) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (11, 17) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (10, 16) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (11, 18) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (8, 17) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (9, 17) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (8, 16) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (8, 18) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (8, 17) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (8, 19) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (9, 16) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (8, 16) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (10, 16) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (9, 15) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (9, 17) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (9, 16) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (10, 15) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (9, 15) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (11, 15) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (10, 16) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (10, 17) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (10, 17) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (11, 18) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (11, 17) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (11, 19) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (11, 20) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (11, 20) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (5, 24) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (4, 24) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (5, 23) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (5, 25) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (6, 23) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (7, 26) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (7, 25) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (7, 27) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (8, 13) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Moving to (9, 13) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (8, 12) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (8, 14) | New rewards left: frozenset({(10, 1), (11, 28)})
+Expanding: (9, 13) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (8, 15) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (8, 15) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (8, 19) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (9, 19) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (8, 18) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (8, 20) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (8, 19) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (8, 21) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (8, 25) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 20) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 20) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 26) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 28) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (9, 27) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 14) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (10, 13) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (10, 13) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (11, 12) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Moving to (10, 12) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (11, 13) | New rewards left: frozenset({(10, 1), (11, 28)})
+Expanding: (11, 12) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (7, 23) | Remaining rewards: frozenset({(10, 1)})
+Moving to (6, 23) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 23) | New rewards left: frozenset({(10, 1)})
+Expanding: (9, 25) | Remaining rewards: frozenset({(10, 1)})
+Moving to (8, 25) | New rewards left: frozenset({(10, 1)})
+Moving to (9, 24) | New rewards left: frozenset({(10, 1)})
+Moving to (9, 26) | New rewards left: frozenset({(10, 1)})
+Expanding: (8, 23) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 23) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (9, 24) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 22) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 21) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 20) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 19) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 18) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 17) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 16) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 15) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 14) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 13) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (7, 11) | Remaining rewards: frozenset({(10, 1)})
+Moving to (6, 11) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 11) | New rewards left: frozenset({(10, 1)})
+Expanding: (8, 12) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (11, 13) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 11) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 11) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (8, 10) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (6, 6) | Remaining rewards: frozenset({(11, 28), (10, 1), (5, 28), (3, 28)})
+Moving to (6, 5) | New rewards left: frozenset({(11, 28), (10, 1), (5, 28), (3, 28)})
+Moving to (6, 7) | New rewards left: frozenset({(11, 28), (10, 1), (5, 28), (3, 28)})
+Expanding: (6, 7) | Remaining rewards: frozenset({(11, 28), (10, 1), (5, 28), (3, 28)})
+Expanding: (1, 27) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Moving to (2, 27) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (1, 26) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (1, 28) | New rewards left: frozenset({(10, 1), (11, 28)})
+Expanding: (2, 27) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (1, 27) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (1, 27) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (2, 27) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (1, 26) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (1, 28) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (2, 27) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (1, 27) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (1, 21) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (2, 21) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (1, 20) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (1, 22) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (2, 21) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (1, 21) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (3, 21) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (3, 21) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (2, 21) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (4, 21) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (4, 21) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (3, 21) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (4, 20) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (1, 23) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (1, 23) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (1, 25) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (1, 24) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (1, 26) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (11, 15) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (10, 15) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (11, 16) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (10, 15) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (11, 17) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (11, 17) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (3, 21) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (4, 20) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (4, 19) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (4, 21) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (8, 16) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (9, 16) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (8, 15) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (8, 17) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (8, 16) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (8, 18) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (9, 15) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (8, 15) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (10, 15) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (9, 14) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (9, 16) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (9, 15) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (9, 17) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (9, 17) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (10, 16) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (10, 16) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (11, 17) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (10, 17) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (11, 16) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (11, 18) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (10, 17) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (9, 17) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (11, 17) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (10, 16) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (11, 19) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (5, 23) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (5, 25) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (5, 24) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (5, 26) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (7, 25) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (7, 27) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (6, 27) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (7, 26) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (7, 28) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (8, 12) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Moving to (8, 11) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (8, 13) | New rewards left: frozenset({(10, 1), (11, 28)})
+Expanding: (8, 14) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (8, 14) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (8, 18) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (8, 17) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (8, 19) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (8, 20) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 17) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (8, 17) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (10, 17) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (9, 16) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 19) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 27) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (10, 16) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (9, 16) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (11, 16) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (10, 15) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (10, 17) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 13) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (10, 12) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (11, 13) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (2, 3) | Remaining rewards: frozenset({(10, 1), (3, 28), (1, 14), (5, 28), (11, 28)})
+Expanding: (1, 5) | Remaining rewards: frozenset({(10, 1), (3, 28), (1, 14), (5, 28), (11, 28)})
+Expanding: (1, 20) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (1, 19) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (1, 21) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (1, 21) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (1, 21) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (1, 21) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (2, 21) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (1, 20) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (1, 22) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (2, 21) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (1, 21) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (3, 21) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (3, 21) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (2, 21) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (4, 21) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (4, 21) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (3, 21) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (4, 20) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (3, 21) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (4, 20) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (4, 19) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (4, 21) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (4, 21) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (1, 22) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (11, 16) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (10, 16) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (11, 15) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (11, 17) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (10, 16) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (3, 19) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (2, 19) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (4, 19) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (3, 18) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (4, 19) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (11, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (11, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (2, 21) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (10, 15) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (9, 15) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (11, 15) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (10, 16) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (9, 15) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (8, 15) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (10, 15) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (9, 14) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (9, 16) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (9, 15) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (10, 16) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (10, 16) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (4, 19) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (3, 19) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (4, 18) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (4, 20) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (8, 15) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (9, 15) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (8, 14) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (8, 16) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (8, 15) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (9, 15) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (8, 14) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (8, 16) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (8, 15) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (9, 16) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (9, 16) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (1, 21) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (2, 21) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (1, 20) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (1, 22) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (2, 21) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (1, 21) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (3, 21) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (3, 21) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (2, 21) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (4, 21) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (4, 21) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (3, 21) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (4, 20) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (3, 21) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (4, 20) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (4, 19) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (4, 21) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (4, 21) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (4, 20) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (8, 16) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (8, 16) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (8, 16) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (9, 15) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (8, 15) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (10, 15) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (9, 14) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (9, 16) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (9, 15) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (1, 22) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (9, 16) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (9, 16) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (10, 15) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (9, 15) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (11, 15) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (10, 16) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (10, 15) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (11, 16) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (10, 16) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (11, 15) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Moving to (11, 17) | New rewards left: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (11, 16) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (8, 16) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (9, 16) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (8, 15) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (8, 17) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (10, 16) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (10, 16) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (11, 17) | Remaining rewards: frozenset({(3, 28), (10, 1), (11, 28)})
+Expanding: (1, 26) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Moving to (2, 26) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (1, 25) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (1, 27) | New rewards left: frozenset({(10, 1), (11, 28)})
+Expanding: (2, 26) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (1, 26) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (1, 28) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (2, 21) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (8, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (8, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (9, 16) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (8, 16) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (10, 16) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (9, 15) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (9, 17) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (9, 16) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (9, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (9, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (10, 16) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (9, 16) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (11, 16) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (10, 15) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (10, 17) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (10, 16) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (11, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (10, 17) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (11, 16) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Moving to (11, 18) | New rewards left: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (11, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (2, 23) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Moving to (1, 23) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (3, 23) | New rewards left: frozenset({(10, 1), (11, 28)})
+Expanding: (3, 23) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (4, 19) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (3, 19) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (4, 18) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Moving to (4, 20) | New rewards left: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (10, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (10, 17) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (11, 18) | Remaining rewards: frozenset({(10, 1), (5, 28), (11, 28)})
+Expanding: (4, 20) | Remaining rewards: frozenset({(10, 1), (5, 28), (3, 28)})
+Expanding: (1, 26) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (2, 26) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (1, 25) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (1, 27) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (2, 26) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (1, 26) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (1, 28) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (1, 20) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (1, 19) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (1, 21) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (1, 22) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (1, 24) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (1, 26) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (2, 26) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (1, 25) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (1, 27) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (2, 26) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (1, 26) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (3, 26) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (2, 27) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (3, 26) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (2, 26) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (3, 27) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (3, 27) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (2, 27) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (3, 26) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (3, 28) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (2, 21) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (2, 27) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (1, 27) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (3, 27) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (2, 26) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (2, 28) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (3, 27) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (11, 16) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (11, 16) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (3, 26) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (3, 28) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+🏆 Collected reward at (3, 28)!
+Moving to (2, 28) | New rewards left: frozenset({(10, 1)})
+Moving to (3, 27) | New rewards left: frozenset({(10, 1)})
+Expanding: (4, 19) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (3, 19) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (4, 18) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (4, 20) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (4, 21) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (4, 23) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (3, 23) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (5, 23) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (4, 24) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (5, 23) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (8, 15) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (9, 15) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (8, 14) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (8, 16) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (8, 15) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (8, 17) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (9, 14) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Moving to (8, 14) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (9, 13) | New rewards left: frozenset({(10, 1), (3, 28)})
+Moving to (9, 15) | New rewards left: frozenset({(10, 1), (3, 28)})
+Expanding: (9, 16) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (9, 16) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (10, 15) | Remaining rewards: frozenset({(10, 1), (3, 28)})
+Expanding: (11, 16) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (10, 16) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (11, 15) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (11, 17) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (10, 16) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (11, 18) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (3, 27) | Remaining rewards: frozenset({(10, 1)})
+Moving to (2, 27) | New rewards left: frozenset({(10, 1)})
+Moving to (3, 26) | New rewards left: frozenset({(10, 1)})
+Moving to (3, 28) | New rewards left: frozenset({(10, 1)})
+Expanding: (3, 26) | Remaining rewards: frozenset({(10, 1)})
+Moving to (2, 26) | New rewards left: frozenset({(10, 1)})
+Moving to (3, 27) | New rewards left: frozenset({(10, 1)})
+Expanding: (5, 24) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (5, 26) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (5, 25) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (5, 27) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (6, 27) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (5, 27) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (7, 27) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (6, 28) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (7, 26) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (7, 28) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (6, 28) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (7, 27) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (8, 11) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Moving to (7, 11) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (8, 10) | New rewards left: frozenset({(10, 1), (11, 28)})
+Moving to (8, 12) | New rewards left: frozenset({(10, 1), (11, 28)})
+Expanding: (8, 13) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (8, 13) | Remaining rewards: frozenset({(10, 1), (11, 28)})
+Expanding: (8, 17) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (9, 17) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (8, 16) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (8, 18) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (8, 17) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (8, 19) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 16) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (8, 16) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (10, 16) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (9, 15) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (9, 17) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (9, 16) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (10, 15) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Moving to (9, 15) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (11, 15) | New rewards left: frozenset({(10, 1), (5, 28)})
+Moving to (10, 16) | New rewards left: frozenset({(10, 1), (5, 28)})
+Expanding: (10, 17) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (10, 17) | Remaining rewards: frozenset({(10, 1), (5, 28)})
+Expanding: (6, 23) | Remaining rewards: frozenset({(10, 1)})
+Moving to (5, 23) | New rewards left: frozenset({(10, 1)})
+Moving to (7, 23) | New rewards left: frozenset({(10, 1)})
+Expanding: (8, 25) | Remaining rewards: frozenset({(10, 1)})
+Moving to (7, 25) | New rewards left: frozenset({(10, 1)})
+Moving to (9, 25) | New rewards left: frozenset({(10, 1)})
+Expanding: (9, 26) | Remaining rewards: frozenset({(10, 1)})
+Moving to (9, 25) | New rewards left: frozenset({(10, 1)})
+Moving to (9, 27) | New rewards left: frozenset({(10, 1)})
+Expanding: (7, 23) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (9, 25) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (9, 25) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (6, 11) | Remaining rewards: frozenset({(10, 1)})
+Moving to (7, 11) | New rewards left: frozenset({(10, 1)})
+Moving to (6, 10) | New rewards left: frozenset({(10, 1)})
+Moving to (6, 12) | New rewards left: frozenset({(10, 1)})
+Expanding: (6, 10) | Remaining rewards: frozenset({(10, 1)})
+Moving to (5, 10) | New rewards left: frozenset({(10, 1)})
+Moving to (6, 9) | New rewards left: frozenset({(10, 1)})
+Moving to (6, 11) | New rewards left: frozenset({(10, 1)})
+Expanding: (7, 11) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (6, 9) | Remaining rewards: frozenset({(10, 1)})
+Moving to (6, 8) | New rewards left: frozenset({(10, 1)})
+Moving to (6, 10) | New rewards left: frozenset({(10, 1)})
+Expanding: (6, 8) | Remaining rewards: frozenset({(10, 1)})
+Moving to (6, 7) | New rewards left: frozenset({(10, 1)})
+Moving to (6, 9) | New rewards left: frozenset({(10, 1)})
+Expanding: (6, 7) | Remaining rewards: frozenset({(10, 1)})
+Moving to (6, 6) | New rewards left: frozenset({(10, 1)})
+Moving to (6, 8) | New rewards left: frozenset({(10, 1)})
+Expanding: (6, 6) | Remaining rewards: frozenset({(10, 1)})
+Moving to (6, 5) | New rewards left: frozenset({(10, 1)})
+Moving to (6, 7) | New rewards left: frozenset({(10, 1)})
+Expanding: (6, 5) | Remaining rewards: frozenset({(10, 1)})
+Moving to (5, 5) | New rewards left: frozenset({(10, 1)})
+Moving to (6, 4) | New rewards left: frozenset({(10, 1)})
+Moving to (6, 6) | New rewards left: frozenset({(10, 1)})
+Expanding: (6, 4) | Remaining rewards: frozenset({(10, 1)})
+Moving to (6, 3) | New rewards left: frozenset({(10, 1)})
+Moving to (6, 5) | New rewards left: frozenset({(10, 1)})
+Expanding: (6, 3) | Remaining rewards: frozenset({(10, 1)})
+Moving to (6, 2) | New rewards left: frozenset({(10, 1)})
+Moving to (6, 4) | New rewards left: frozenset({(10, 1)})
+Expanding: (6, 2) | Remaining rewards: frozenset({(10, 1)})
+Moving to (7, 2) | New rewards left: frozenset({(10, 1)})
+Moving to (6, 1) | New rewards left: frozenset({(10, 1)})
+Moving to (6, 3) | New rewards left: frozenset({(10, 1)})
+Expanding: (6, 1) | Remaining rewards: frozenset({(10, 1)})
+Moving to (6, 2) | New rewards left: frozenset({(10, 1)})
+Expanding: (7, 2) | Remaining rewards: frozenset({(10, 1)})
+Moving to (6, 2) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 2) | New rewards left: frozenset({(10, 1)})
+Expanding: (8, 2) | Remaining rewards: frozenset({(10, 1)})
+Moving to (7, 2) | New rewards left: frozenset({(10, 1)})
+Moving to (9, 2) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 1) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 3) | New rewards left: frozenset({(10, 1)})
+Expanding: (8, 1) | Remaining rewards: frozenset({(10, 1)})
+Moving to (9, 1) | New rewards left: frozenset({(10, 1)})
+Moving to (8, 2) | New rewards left: frozenset({(10, 1)})
+Expanding: (9, 2) | Remaining rewards: frozenset({(10, 1)})
+Moving to (8, 2) | New rewards left: frozenset({(10, 1)})
+Moving to (9, 1) | New rewards left: frozenset({(10, 1)})
+Moving to (9, 3) | New rewards left: frozenset({(10, 1)})
+Expanding: (9, 1) | Remaining rewards: frozenset({(10, 1)})
+Moving to (8, 1) | New rewards left: frozenset({(10, 1)})
+Moving to (10, 1) | New rewards left: frozenset({(10, 1)})
+Moving to (9, 2) | New rewards left: frozenset({(10, 1)})
+Expanding: (9, 1) | Remaining rewards: frozenset({(10, 1)})
+Expanding: (10, 1) | Remaining rewards: frozenset({(10, 1)})
+🏆 Collected reward at (10, 1)!
+✅ Goal reached! All rewards collected!
+
+Solution:
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%  ###########.%######.##.#  %
+%  #%%%%%#%%%%%%#%# % %#%%#  %
+%  #%. % ####%  #%# % %# %##.%
+%.#### %    #.###%.   %# %%%%%
+%%%%%#%%%% %%% #%%%%%%%#####.%
+%.##########   ##.    %#%%% #%
+%%#%%%%%%%%#%%%%%%%%%%%#%####%
+%##     %  #############%#%%%%
+%#      %%%%%#  # %.   ###   %
+%.% %%%    % #% ##%% %%#%%%%%%
+%          % .%  ###########.%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Path cost: 207
+Nodes expanded: 6324
\ No newline at end of file
diff --git a/State Space Representation and Implementation Choices - Nour A..pdf b/State Space Representation and Implementation Choices - Nour A..pdf
new file mode 100644
index 0000000000000000000000000000000000000000..c5c353c7236a47d22ad5082896cd8ea3e02fa586
Binary files /dev/null and b/State Space Representation and Implementation Choices - Nour A..pdf differ
diff --git a/State.py b/State.py
index 7850d7fffb1db1b418a7bac0c32f554239589b85..4bfec39df6bd83bffef8284bbf80f9d11c74ddad 100644
--- a/State.py
+++ b/State.py
@@ -1,22 +1,30 @@
+#Nour A. - Lab A
 from collections import deque
 import heapq
 
 class State:
     def __init__(self, position, remaining_rewards):
         self.position = position  # (x, y)
-        self.remaining_rewards = frozenset(remaining_rewards)  # {(x1, y1), (x2, y2), ...}
-        
+        self.remaining_rewards = frozenset(remaining_rewards)
+
     def __lt__(self, other):
-        return self.position < other.position
+        return self.position < other.position  #comparisons needed
 
 def get_neighbors(state, maze):
     x, y = state.position
+    rows, cols = len(maze), len(maze[0])
     possible_moves = [(x-1, y), (x+1, y), (x, y-1), (x, y+1)]
-    valid_moves = [pos for pos in possible_moves if maze[pos[0]][pos[1]] != '%']
+    valid_moves = [
+        (nx, ny) for nx, ny in possible_moves
+        if 0 <= nx < rows and 0 <= ny < cols and maze[nx][ny] != '%'
+    ]
     return valid_moves
 
 def is_goal(state):
-    return len(state.remaining_rewards) == 0
+    if len(state.remaining_rewards) == 0:
+        print("Goal reached: The mouse is happy.")
+        return True
+    return False
 
 def read_maze(file_path):
     with open(file_path, 'r') as file:
@@ -34,34 +42,8 @@ def read_maze(file_path):
     
     return maze, State(start, rewards)
 
-def single_dfs(file_path):
-    maze, initial_state = read_maze(file_path)
-    stack = [(initial_state, [])]  # (current state, path taken)
-    visited = set()
-
-    while stack:
-        state, path = stack.pop()
-        
-        if state.position in visited:
-            continue
-        visited.add(state.position)
-
-        if is_goal(state):
-            print_maze_solution(maze, path)
-            print(f"Path cost: {len(path)}")
-            print(f"Nodes expanded: {len(visited)}")
-            return path
-        
-        for move in get_neighbors(state, maze):
-            new_rewards = state.remaining_rewards - {move} if move in state.remaining_rewards else state.remaining_rewards
-            new_state = State(move, new_rewards)
-            stack.append((new_state, path + [move]))
-
-    print("No solution found.")
-    return None
-
 def print_maze_solution(maze, path):
-    maze_copy = [row[:] for row in maze]  # Make a copy of the maze
+    maze_copy = [row[:] for row in maze]  # copy maze
     for x, y in path:
         if maze_copy[x][y] != '.':  # Keep rewards visible
             maze_copy[x][y] = '#'
@@ -69,66 +51,56 @@ def print_maze_solution(maze, path):
     print("\nSolution:")
     for row in maze_copy:
         print("".join(row))
-single_dfs('test_maze.txt')
-
-def single_bfs(file_path):
-    maze, initial_state = read_maze(file_path)
-    queue = deque([(initial_state, [])])  # (current state, path)
-    visited = set()
-
-    while queue:
-        state, path = queue.popleft()
-
-        if state.position in visited:
-            continue
-        visited.add(state.position)
-
-        if is_goal(state):
-            print_maze_solution(maze, path)
-            print(f"Path cost: {len(path)}")
-            print(f"Nodes passed: {len(visited)}")
-            return path
-
-        for move in get_neighbors(state, maze):
-            new_rewards = state.remaining_rewards - {move} if move in state.remaining_rewards else state.remaining_rewards
-            new_state = State(move, new_rewards)
-            queue.append((new_state, path + [move]))
-
-    print("Sadly, the mouse is dead :(")
-    return None
 
 def manhattan_distance(pos1, pos2):
     return abs(pos1[0] - pos2[0]) + abs(pos1[1] - pos2[1])
 
-def single_gbfs(file_path):
+def multi_astar(file_path):
     maze, initial_state = read_maze(file_path)
-    goal = next(iter(initial_state.remaining_rewards))  # 1prize,1goal
-    
-    priority_queue = [(manhattan_distance(initial_state.position, goal), initial_state, [])]
-    visited = set()
+    priority_queue = [(0, 0, initial_state, [])]  # (f, g, state, path)
+    visited = {}  # keys are (position, remaining_rewards)
 
     while priority_queue:
-        _, state, path = heapq.heappop(priority_queue)
-
-
-        if state.position in visited:
+        _, g, state, path = heapq.heappop(priority_queue)
+        print(f"Expanding: {state.position} | Remaining rewards: {state.remaining_rewards}")
+        
+        if (state.position, state.remaining_rewards) in visited and visited[(state.position, state.remaining_rewards)] <= g:
             continue
-        visited.add(state.position)
+        visited[(state.position, state.remaining_rewards)] = g
 
-        if is_goal(state):
+        # if the reward gets collected, remove it (so no loop)
+        new_rewards = set(state.remaining_rewards)
+        if state.position in new_rewards:
+            print(f"Collected reward at {state.position}!")
+            new_rewards.remove(state.position)
+        
+        if not new_rewards:  # stop when all rewards are collected
+            print("Goal reached! The mouse is happy.")
             print_maze_solution(maze, path)
             print(f"Path cost: {len(path)}")
-            print(f"Nodes passed: {len(visited)}")
+            print(f"Nodes expanded: {len(visited)}")
             return path
 
         for move in get_neighbors(state, maze):
-            new_rewards = state.remaining_rewards - {move} if move in state.remaining_rewards else state.remaining_rewards
-            new_state = State(move, new_rewards)
-            heapq.heappush(priority_queue, (manhattan_distance(move, goal), new_state, path + [move]))
-
-
-
-    print("Sadly, the mouse is dead :(")
+            updated_rewards = frozenset(new_rewards)  # Convert back to frozenset
+            new_state = State(move, updated_rewards)
+            print(f"Moving to {move} | New rewards left: {updated_rewards}")
+            heuristic = sum(manhattan_distance(move, reward) for reward in updated_rewards)
+            new_g = g + 1
+            f = new_g + heuristic
+            heapq.heappush(priority_queue, (f, new_g, new_state, path + [move]))
+
+    print("The mouse is dead.")
     return None
 
-single_gbfs('test_maze.txt')
+if __name__ == "__main__":
+    while True:
+        file_name = input("Which maze do you want to throw the mouse at? Write the name: ")
+        if file_name.lower() == "q":
+            print("Quitting. The mouse escapes!")
+            break
+        try:
+            multi_astar(file_name)  #so that I don't have  a hardcoded file.
+            break
+        except FileNotFoundError:
+            print(f"Hmmmm..not sure that '{file_name}' is a correct maze name. Please try again or press 'q' to quit.")
diff --git a/multiprize-small.txt b/multiprize-small.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4f675251e0704aedd728821ce6f5c93be3b17a80
--- /dev/null
+++ b/multiprize-small.txt
@@ -0,0 +1,13 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%      P      .%      .  .   %
+%   %%%%% %%%%%% %  % % %%   %
+%   %. %     %   %  % %  %  .%
+%.     %     .   %.   %  %%%%%
+%%%%% %%%% %%%  %%%%%%%     .%
+%.               .    % %%%  %
+%% %%%%%%%% %%%%%%%%%%% %    %
+%       %               % %%%%
+%       %%%%%     %.         %
+%.% %%%    %  %   %% %% %%%%%%
+%          % .%             .%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%