game: havannah(board_size=4,swap=True)

GameType.chance_mode = ChanceMode.DETERMINISTIC
GameType.dynamics = Dynamics.SEQUENTIAL
GameType.information = Information.PERFECT_INFORMATION
GameType.long_name = "Havannah"
GameType.max_num_players = 2
GameType.min_num_players = 2
GameType.parameter_specification = ["ansi_color_output", "board_size", "swap"]
GameType.provides_information_state_string = True
GameType.provides_information_state_tensor = False
GameType.provides_observation_string = True
GameType.provides_observation_tensor = True
GameType.provides_factored_observation_string = False
GameType.reward_model = RewardModel.TERMINAL
GameType.short_name = "havannah"
GameType.utility = Utility.ZERO_SUM

NumDistinctActions() = 49
PolicyTensorShape() = [49]
MaxChanceOutcomes() = 0
GetParameters() = {ansi_color_output=False,board_size=4,swap=True}
NumPlayers() = 2
MinUtility() = -1.0
MaxUtility() = 1.0
UtilitySum() = 0.0
ObservationTensorShape() = [3, 7, 7]
ObservationTensorLayout() = TensorLayout.CHW
ObservationTensorSize() = 147
MaxGameLength() = 38
ToString() = "havannah(board_size=4,swap=True)"

# State 0
#         a b c d
#      1 . . . . e
#     2 . . . . . f
#    3 . . . . . . g
#   4 . . . . . . .
#    5 . . . . . .
#     6 . . . . .
#      7 . . . .
IsTerminal() = False
History() = []
HistoryString() = ""
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = ""
InformationStateString(1) = ""
ObservationString(0) = "        a b c d\n     1 . . . . e\n    2 . . . . . f\n   3 . . . . . . g\n  4 . . . . . . .\n   5 . . . . . .\n    6 . . . . .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 . . . . e\n    2 . . . . . f\n   3 . . . . . . g\n  4 . . . . . . .\n   5 . . . . . .\n    6 . . . . .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 . . . . e\n    2 . . . . . f\n   3 . . . . . . g\n  4 . . . . . . .\n   5 . . . . . .\n    6 . . . . .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 45, 46, 47, 48]
StringLegalActions() = ["a1", "b1", "c1", "d1", "a2", "b2", "c2", "d2", "e2", "a3", "b3", "c3", "d3", "e3", "f3", "a4", "b4", "c4", "d4", "e4", "f4", "g4", "b5", "c5", "d5", "e5", "f5", "g5", "c6", "d6", "e6", "f6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "c4"
action: 23

# State 1
#         a b c d
#      1 . . . . e
#     2 . . . . . f
#    3 . . . . . . g
#   4 . .[O]. . . .
#    5 . . . . . .
#     6 . . . . .
#      7 . . . .
IsTerminal() = False
History() = [23]
HistoryString() = "23"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "23"
InformationStateString(1) = "23"
ObservationString(0) = "        a b c d\n     1 . . . . e\n    2 . . . . . f\n   3 . . . . . . g\n  4 . .[O]. . . .\n   5 . . . . . .\n    6 . . . . .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 . . . . e\n    2 . . . . . f\n   3 . . . . . . g\n  4 . .[O]. . . .\n   5 . . . . . .\n    6 . . . . .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 . . . . e\n    2 . . . . . f\n   3 . . . . . . g\n  4 . .[O]. . . .\n   5 . . . . . .\n    6 . . . . .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◯
◯◯◉◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◯
◯◯◯◯◯◯◯  ◯◯◉◯◯◯◯  ◉◉◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 45, 46, 47, 48]
StringLegalActions() = ["a1", "b1", "c1", "d1", "a2", "b2", "c2", "d2", "e2", "a3", "b3", "c3", "d3", "e3", "f3", "a4", "b4", "c4", "d4", "e4", "f4", "g4", "b5", "c5", "d5", "e5", "f5", "g5", "c6", "d6", "e6", "f6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "c4"
action: 23

# State 2
#         a b c d
#      1 . . . . e
#     2 . . . . . f
#    3 . . . . . . g
#   4 . .[@]. . . .
#    5 . . . . . .
#     6 . . . . .
#      7 . . . .
IsTerminal() = False
History() = [23, 23]
HistoryString() = "23, 23"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "23, 23"
InformationStateString(1) = "23, 23"
ObservationString(0) = "        a b c d\n     1 . . . . e\n    2 . . . . . f\n   3 . . . . . . g\n  4 . .[@]. . . .\n   5 . . . . . .\n    6 . . . . .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 . . . . e\n    2 . . . . . f\n   3 . . . . . . g\n  4 . .[@]. . . .\n   5 . . . . . .\n    6 . . . . .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 . . . . e\n    2 . . . . . f\n   3 . . . . . . g\n  4 . .[@]. . . .\n   5 . . . . . .\n    6 . . . . .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◯
◯◯◯◯◯◯◯  ◯◯◉◯◯◯◯  ◉◉◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◯
◯◯◉◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19, 21, 22, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 45, 46, 47, 48]
StringLegalActions() = ["a1", "b1", "c1", "d1", "a2", "b2", "c2", "d2", "e2", "a3", "b3", "c3", "d3", "e3", "f3", "a4", "b4", "d4", "e4", "f4", "g4", "b5", "c5", "d5", "e5", "f5", "g5", "c6", "d6", "e6", "f6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "d2"
action: 10

# State 3
#         a b c d
#      1 . . . . e
#     2 . . .[O]. f
#    3 . . . . . . g
#   4 . . @ . . . .
#    5 . . . . . .
#     6 . . . . .
#      7 . . . .
IsTerminal() = False
History() = [23, 23, 10]
HistoryString() = "23, 23, 10"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "23, 23, 10"
InformationStateString(1) = "23, 23, 10"
ObservationString(0) = "        a b c d\n     1 . . . . e\n    2 . . .[O]. f\n   3 . . . . . . g\n  4 . . @ . . . .\n   5 . . . . . .\n    6 . . . . .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 . . . . e\n    2 . . .[O]. f\n   3 . . . . . . g\n  4 . . @ . . . .\n   5 . . . . . .\n    6 . . . . .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 . . . . e\n    2 . . .[O]. f\n   3 . . . . . . g\n  4 . . @ . . . .\n   5 . . . . . .\n    6 . . . . .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◉◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◯◉◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◯
◯◯◯◯◯◯◯  ◯◯◉◯◯◯◯  ◉◉◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◉◯◯◯  ◉◉◉◯◉◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◯
◯◯◉◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 7, 8, 9, 11, 14, 15, 16, 17, 18, 19, 21, 22, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 45, 46, 47, 48]
StringLegalActions() = ["a1", "b1", "c1", "d1", "a2", "b2", "c2", "e2", "a3", "b3", "c3", "d3", "e3", "f3", "a4", "b4", "d4", "e4", "f4", "g4", "b5", "c5", "d5", "e5", "f5", "g5", "c6", "d6", "e6", "f6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "c5"
action: 30

# State 4
#         a b c d
#      1 . . . . e
#     2 . . . O . f
#    3 . . . . . . g
#   4 . . @ . . . .
#    5 .[@]. . . .
#     6 . . . . .
#      7 . . . .
IsTerminal() = False
History() = [23, 23, 10, 30]
HistoryString() = "23, 23, 10, 30"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "23, 23, 10, 30"
InformationStateString(1) = "23, 23, 10, 30"
ObservationString(0) = "        a b c d\n     1 . . . . e\n    2 . . . O . f\n   3 . . . . . . g\n  4 . . @ . . . .\n   5 .[@]. . . .\n    6 . . . . .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 . . . . e\n    2 . . . O . f\n   3 . . . . . . g\n  4 . . @ . . . .\n   5 .[@]. . . .\n    6 . . . . .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 . . . . e\n    2 . . . O . f\n   3 . . . . . . g\n  4 . . @ . . . .\n   5 .[@]. . . .\n    6 . . . . .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◉◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◯◉◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◯
◯◯◯◯◯◯◯  ◯◯◉◯◯◯◯  ◉◉◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◉◯◯◯◯  ◯◉◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◉◯◯◯  ◉◉◉◯◉◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◯
◯◯◉◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◯◉◉◉◉
◯◯◉◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 7, 8, 9, 11, 14, 15, 16, 17, 18, 19, 21, 22, 24, 25, 26, 27, 29, 31, 32, 33, 34, 37, 38, 39, 40, 41, 45, 46, 47, 48]
StringLegalActions() = ["a1", "b1", "c1", "d1", "a2", "b2", "c2", "e2", "a3", "b3", "c3", "d3", "e3", "f3", "a4", "b4", "d4", "e4", "f4", "g4", "b5", "d5", "e5", "f5", "g5", "c6", "d6", "e6", "f6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "b4"
action: 22

# State 5
#         a b c d
#      1 . . . . e
#     2 . . . O . f
#    3 . . . . . . g
#   4 .[O]@ . . . .
#    5 . @ . . . .
#     6 . . . . .
#      7 . . . .
IsTerminal() = False
History() = [23, 23, 10, 30, 22]
HistoryString() = "23, 23, 10, 30, 22"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "23, 23, 10, 30, 22"
InformationStateString(1) = "23, 23, 10, 30, 22"
ObservationString(0) = "        a b c d\n     1 . . . . e\n    2 . . . O . f\n   3 . . . . . . g\n  4 .[O]@ . . . .\n   5 . @ . . . .\n    6 . . . . .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 . . . . e\n    2 . . . O . f\n   3 . . . . . . g\n  4 .[O]@ . . . .\n   5 . @ . . . .\n    6 . . . . .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 . . . . e\n    2 . . . O . f\n   3 . . . . . . g\n  4 .[O]@ . . . .\n   5 . @ . . . .\n    6 . . . . .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◉◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◯◉◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◯
◯◉◯◯◯◯◯  ◯◯◉◯◯◯◯  ◉◯◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◉◯◯◯◯  ◯◉◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◉◯◯◯  ◉◉◉◯◉◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◯
◯◯◉◯◯◯◯  ◯◉◯◯◯◯◯  ◉◯◯◉◉◉◉
◯◯◉◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 7, 8, 9, 11, 14, 15, 16, 17, 18, 19, 21, 24, 25, 26, 27, 29, 31, 32, 33, 34, 37, 38, 39, 40, 41, 45, 46, 47, 48]
StringLegalActions() = ["a1", "b1", "c1", "d1", "a2", "b2", "c2", "e2", "a3", "b3", "c3", "d3", "e3", "f3", "a4", "d4", "e4", "f4", "g4", "b5", "d5", "e5", "f5", "g5", "c6", "d6", "e6", "f6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "f4"
action: 26

# State 6
#         a b c d
#      1 . . . . e
#     2 . . . O . f
#    3 . . . . . . g
#   4 . O @ . .[@].
#    5 . @ . . . .
#     6 . . . . .
#      7 . . . .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26]
HistoryString() = "23, 23, 10, 30, 22, 26"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "23, 23, 10, 30, 22, 26"
InformationStateString(1) = "23, 23, 10, 30, 22, 26"
ObservationString(0) = "        a b c d\n     1 . . . . e\n    2 . . . O . f\n   3 . . . . . . g\n  4 . O @ . .[@].\n   5 . @ . . . .\n    6 . . . . .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 . . . . e\n    2 . . . O . f\n   3 . . . . . . g\n  4 . O @ . .[@].\n   5 . @ . . . .\n    6 . . . . .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 . . . . e\n    2 . . . O . f\n   3 . . . . . . g\n  4 . O @ . .[@].\n   5 . @ . . . .\n    6 . . . . .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◉◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◯◉◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◯
◯◉◯◯◯◯◯  ◯◯◉◯◯◉◯  ◉◯◯◉◉◯◉
◯◯◯◯◯◯◯  ◯◯◉◯◯◯◯  ◯◉◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◉◯◯◯  ◉◉◉◯◉◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◯
◯◯◉◯◯◉◯  ◯◉◯◯◯◯◯  ◉◯◯◉◉◯◉
◯◯◉◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 7, 8, 9, 11, 14, 15, 16, 17, 18, 19, 21, 24, 25, 27, 29, 31, 32, 33, 34, 37, 38, 39, 40, 41, 45, 46, 47, 48]
StringLegalActions() = ["a1", "b1", "c1", "d1", "a2", "b2", "c2", "e2", "a3", "b3", "c3", "d3", "e3", "f3", "a4", "d4", "e4", "g4", "b5", "d5", "e5", "f5", "g5", "c6", "d6", "e6", "f6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "b3"
action: 15

# State 7
#         a b c d
#      1 . . . . e
#     2 . . . O . f
#    3 .[O]. . . . g
#   4 . O @ . . @ .
#    5 . @ . . . .
#     6 . . . . .
#      7 . . . .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15]
HistoryString() = "23, 23, 10, 30, 22, 26, 15"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15"
ObservationString(0) = "        a b c d\n     1 . . . . e\n    2 . . . O . f\n   3 .[O]. . . . g\n  4 . O @ . . @ .\n   5 . @ . . . .\n    6 . . . . .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 . . . . e\n    2 . . . O . f\n   3 .[O]. . . . g\n  4 . O @ . . @ .\n   5 . @ . . . .\n    6 . . . . .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 . . . . e\n    2 . . . O . f\n   3 .[O]. . . . g\n  4 . O @ . . @ .\n   5 . @ . . . .\n    6 . . . . .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◉◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◯◉◯◯
◯◉◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◯◉◉◉◉◯
◯◉◯◯◯◯◯  ◯◯◉◯◯◉◯  ◉◯◯◉◉◯◉
◯◯◯◯◯◯◯  ◯◯◉◯◯◯◯  ◯◉◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◉◯◯◯  ◉◉◉◯◉◯◯
◯◯◯◯◯◯◯  ◯◉◯◯◯◯◯  ◉◯◉◉◉◉◯
◯◯◉◯◯◉◯  ◯◉◯◯◯◯◯  ◉◯◯◉◉◯◉
◯◯◉◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 7, 8, 9, 11, 14, 16, 17, 18, 19, 21, 24, 25, 27, 29, 31, 32, 33, 34, 37, 38, 39, 40, 41, 45, 46, 47, 48]
StringLegalActions() = ["a1", "b1", "c1", "d1", "a2", "b2", "c2", "e2", "a3", "c3", "d3", "e3", "f3", "a4", "d4", "e4", "g4", "b5", "d5", "e5", "f5", "g5", "c6", "d6", "e6", "f6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "e2"
action: 11

# State 8
#         a b c d
#      1 . . . . e
#     2 . . . O[@] f
#    3 . O . . . . g
#   4 . O @ . . @ .
#    5 . @ . . . .
#     6 . . . . .
#      7 . . . .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11"
ObservationString(0) = "        a b c d\n     1 . . . . e\n    2 . . . O[@] f\n   3 . O . . . . g\n  4 . O @ . . @ .\n   5 . @ . . . .\n    6 . . . . .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 . . . . e\n    2 . . . O[@] f\n   3 . O . . . . g\n  4 . O @ . . @ .\n   5 . @ . . . .\n    6 . . . . .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 . . . . e\n    2 . . . O[@] f\n   3 . O . . . . g\n  4 . O @ . . @ .\n   5 . @ . . . .\n    6 . . . . .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◉◯◯◯  ◯◯◯◯◉◯◯  ◉◉◉◯◯◯◯
◯◉◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◯◉◉◉◉◯
◯◉◯◯◯◯◯  ◯◯◉◯◯◉◯  ◉◯◯◉◉◯◉
◯◯◯◯◯◯◯  ◯◯◉◯◯◯◯  ◯◉◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◯◉◯◯  ◯◯◯◉◯◯◯  ◉◉◉◯◯◯◯
◯◯◯◯◯◯◯  ◯◉◯◯◯◯◯  ◉◯◉◉◉◉◯
◯◯◉◯◯◉◯  ◯◉◯◯◯◯◯  ◉◯◯◉◉◯◉
◯◯◉◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 7, 8, 9, 14, 16, 17, 18, 19, 21, 24, 25, 27, 29, 31, 32, 33, 34, 37, 38, 39, 40, 41, 45, 46, 47, 48]
StringLegalActions() = ["a1", "b1", "c1", "d1", "a2", "b2", "c2", "a3", "c3", "d3", "e3", "f3", "a4", "d4", "e4", "g4", "b5", "d5", "e5", "f5", "g5", "c6", "d6", "e6", "f6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "f5"
action: 33

# State 9
#         a b c d
#      1 . . . . e
#     2 . . . O @ f
#    3 . O . . . . g
#   4 . O @ . . @ .
#    5 . @ . .[O].
#     6 . . . . .
#      7 . . . .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33"
ObservationString(0) = "        a b c d\n     1 . . . . e\n    2 . . . O @ f\n   3 . O . . . . g\n  4 . O @ . . @ .\n   5 . @ . .[O].\n    6 . . . . .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 . . . . e\n    2 . . . O @ f\n   3 . O . . . . g\n  4 . O @ . . @ .\n   5 . @ . .[O].\n    6 . . . . .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 . . . . e\n    2 . . . O @ f\n   3 . O . . . . g\n  4 . O @ . . @ .\n   5 . @ . .[O].\n    6 . . . . .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◉◯◯◯  ◯◯◯◯◉◯◯  ◉◉◉◯◯◯◯
◯◉◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◯◉◉◉◉◯
◯◉◯◯◯◯◯  ◯◯◉◯◯◉◯  ◉◯◯◉◉◯◉
◯◯◯◯◯◉◯  ◯◯◉◯◯◯◯  ◯◉◯◉◉◯◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◯◉◯◯  ◯◯◯◉◯◯◯  ◉◉◉◯◯◯◯
◯◯◯◯◯◯◯  ◯◉◯◯◯◯◯  ◉◯◉◉◉◉◯
◯◯◉◯◯◉◯  ◯◉◯◯◯◯◯  ◉◯◯◉◉◯◉
◯◯◉◯◯◯◯  ◯◯◯◯◯◉◯  ◯◉◯◉◉◯◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 7, 8, 9, 14, 16, 17, 18, 19, 21, 24, 25, 27, 29, 31, 32, 34, 37, 38, 39, 40, 41, 45, 46, 47, 48]
StringLegalActions() = ["a1", "b1", "c1", "d1", "a2", "b2", "c2", "a3", "c3", "d3", "e3", "f3", "a4", "d4", "e4", "g4", "b5", "d5", "e5", "g5", "c6", "d6", "e6", "f6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "g4"
action: 27

# State 10
#         a b c d
#      1 . . . . e
#     2 . . . O @ f
#    3 . O . . . . g
#   4 . O @ . . @[@]
#    5 . @ . . O .
#     6 . . . . .
#      7 . . . .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27"
ObservationString(0) = "        a b c d\n     1 . . . . e\n    2 . . . O @ f\n   3 . O . . . . g\n  4 . O @ . . @[@]\n   5 . @ . . O .\n    6 . . . . .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 . . . . e\n    2 . . . O @ f\n   3 . O . . . . g\n  4 . O @ . . @[@]\n   5 . @ . . O .\n    6 . . . . .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 . . . . e\n    2 . . . O @ f\n   3 . O . . . . g\n  4 . O @ . . @[@]\n   5 . @ . . O .\n    6 . . . . .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◉◯◯◯  ◯◯◯◯◉◯◯  ◉◉◉◯◯◯◯
◯◉◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◯◉◉◉◉◯
◯◉◯◯◯◯◯  ◯◯◉◯◯◉◉  ◉◯◯◉◉◯◯
◯◯◯◯◯◉◯  ◯◯◉◯◯◯◯  ◯◉◯◉◉◯◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◯◉◯◯  ◯◯◯◉◯◯◯  ◉◉◉◯◯◯◯
◯◯◯◯◯◯◯  ◯◉◯◯◯◯◯  ◉◯◉◉◉◉◯
◯◯◉◯◯◉◉  ◯◉◯◯◯◯◯  ◉◯◯◉◉◯◯
◯◯◉◯◯◯◯  ◯◯◯◯◯◉◯  ◯◉◯◉◉◯◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 7, 8, 9, 14, 16, 17, 18, 19, 21, 24, 25, 29, 31, 32, 34, 37, 38, 39, 40, 41, 45, 46, 47, 48]
StringLegalActions() = ["a1", "b1", "c1", "d1", "a2", "b2", "c2", "a3", "c3", "d3", "e3", "f3", "a4", "d4", "e4", "b5", "d5", "e5", "g5", "c6", "d6", "e6", "f6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "e5"
action: 32

# State 11
#         a b c d
#      1 . . . . e
#     2 . . . O @ f
#    3 . O . . . . g
#   4 . O @ . . @ @
#    5 . @ .[O]O .
#     6 . . . . .
#      7 . . . .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32"
ObservationString(0) = "        a b c d\n     1 . . . . e\n    2 . . . O @ f\n   3 . O . . . . g\n  4 . O @ . . @ @\n   5 . @ .[O]O .\n    6 . . . . .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 . . . . e\n    2 . . . O @ f\n   3 . O . . . . g\n  4 . O @ . . @ @\n   5 . @ .[O]O .\n    6 . . . . .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 . . . . e\n    2 . . . O @ f\n   3 . O . . . . g\n  4 . O @ . . @ @\n   5 . @ .[O]O .\n    6 . . . . .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◉◯◯◯  ◯◯◯◯◉◯◯  ◉◉◉◯◯◯◯
◯◉◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◯◉◉◉◉◯
◯◉◯◯◯◯◯  ◯◯◉◯◯◉◉  ◉◯◯◉◉◯◯
◯◯◯◯◉◉◯  ◯◯◉◯◯◯◯  ◯◉◯◉◯◯◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◯◉◯◯  ◯◯◯◉◯◯◯  ◉◉◉◯◯◯◯
◯◯◯◯◯◯◯  ◯◉◯◯◯◯◯  ◉◯◉◉◉◉◯
◯◯◉◯◯◉◉  ◯◉◯◯◯◯◯  ◉◯◯◉◉◯◯
◯◯◉◯◯◯◯  ◯◯◯◯◉◉◯  ◯◉◯◉◯◯◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 7, 8, 9, 14, 16, 17, 18, 19, 21, 24, 25, 29, 31, 34, 37, 38, 39, 40, 41, 45, 46, 47, 48]
StringLegalActions() = ["a1", "b1", "c1", "d1", "a2", "b2", "c2", "a3", "c3", "d3", "e3", "f3", "a4", "d4", "e4", "b5", "d5", "g5", "c6", "d6", "e6", "f6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "b2"
action: 8

# State 12
#         a b c d
#      1 . . . . e
#     2 .[@]. O @ f
#    3 . O . . . . g
#   4 . O @ . . @ @
#    5 . @ . O O .
#     6 . . . . .
#      7 . . . .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8"
ObservationString(0) = "        a b c d\n     1 . . . . e\n    2 .[@]. O @ f\n   3 . O . . . . g\n  4 . O @ . . @ @\n   5 . @ . O O .\n    6 . . . . .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 . . . . e\n    2 .[@]. O @ f\n   3 . O . . . . g\n  4 . O @ . . @ @\n   5 . @ . O O .\n    6 . . . . .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 . . . . e\n    2 .[@]. O @ f\n   3 . O . . . . g\n  4 . O @ . . @ @\n   5 . @ . O O .\n    6 . . . . .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◉◯◯◯◯
◯◉◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◯◉◉◉◉◯
◯◉◯◯◯◯◯  ◯◯◉◯◯◉◉  ◉◯◯◉◉◯◯
◯◯◯◯◉◉◯  ◯◯◉◯◯◯◯  ◯◉◯◉◯◯◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◉◯◯◉◯◯  ◯◯◯◉◯◯◯  ◉◯◉◯◯◯◯
◯◯◯◯◯◯◯  ◯◉◯◯◯◯◯  ◉◯◉◉◉◉◯
◯◯◉◯◯◉◉  ◯◉◯◯◯◯◯  ◉◯◯◉◉◯◯
◯◯◉◯◯◯◯  ◯◯◯◯◉◉◯  ◯◉◯◉◯◯◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 7, 9, 14, 16, 17, 18, 19, 21, 24, 25, 29, 31, 34, 37, 38, 39, 40, 41, 45, 46, 47, 48]
StringLegalActions() = ["a1", "b1", "c1", "d1", "a2", "c2", "a3", "c3", "d3", "e3", "f3", "a4", "d4", "e4", "b5", "d5", "g5", "c6", "d6", "e6", "f6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "g5"
action: 34

# State 13
#         a b c d
#      1 . . . . e
#     2 . @ . O @ f
#    3 . O . . . . g
#   4 . O @ . . @ @
#    5 . @ . O O[O]
#     6 . . . . .
#      7 . . . .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34"
ObservationString(0) = "        a b c d\n     1 . . . . e\n    2 . @ . O @ f\n   3 . O . . . . g\n  4 . O @ . . @ @\n   5 . @ . O O[O]\n    6 . . . . .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 . . . . e\n    2 . @ . O @ f\n   3 . O . . . . g\n  4 . O @ . . @ @\n   5 . @ . O O[O]\n    6 . . . . .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 . . . . e\n    2 . @ . O @ f\n   3 . O . . . . g\n  4 . O @ . . @ @\n   5 . @ . O O[O]\n    6 . . . . .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◉◯◯◯◯
◯◉◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◯◉◉◉◉◯
◯◉◯◯◯◯◯  ◯◯◉◯◯◉◉  ◉◯◯◉◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◯◯◯◯  ◯◉◯◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◉◯◯◉◯◯  ◯◯◯◉◯◯◯  ◉◯◉◯◯◯◯
◯◯◯◯◯◯◯  ◯◉◯◯◯◯◯  ◉◯◉◉◉◉◯
◯◯◉◯◯◉◉  ◯◉◯◯◯◯◯  ◉◯◯◉◉◯◯
◯◯◉◯◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 7, 9, 14, 16, 17, 18, 19, 21, 24, 25, 29, 31, 37, 38, 39, 40, 41, 45, 46, 47, 48]
StringLegalActions() = ["a1", "b1", "c1", "d1", "a2", "c2", "a3", "c3", "d3", "e3", "f3", "a4", "d4", "e4", "b5", "d5", "c6", "d6", "e6", "f6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "a4"
action: 21

# State 14
#         a b c d
#      1 . . . . e
#     2 . @ . O @ f
#    3 . O . . . . g
#   4[@]O @ . . @ @
#    5 . @ . O O O
#     6 . . . . .
#      7 . . . .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21"
ObservationString(0) = "        a b c d\n     1 . . . . e\n    2 . @ . O @ f\n   3 . O . . . . g\n  4[@]O @ . . @ @\n   5 . @ . O O O\n    6 . . . . .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 . . . . e\n    2 . @ . O @ f\n   3 . O . . . . g\n  4[@]O @ . . @ @\n   5 . @ . O O O\n    6 . . . . .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 . . . . e\n    2 . @ . O @ f\n   3 . O . . . . g\n  4[@]O @ . . @ @\n   5 . @ . O O O\n    6 . . . . .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◉◯◯◯◯
◯◉◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◯◉◉◉◉◯
◯◉◯◯◯◯◯  ◉◯◉◯◯◉◉  ◯◯◯◉◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◯◯◯◯  ◯◉◯◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◉◯◯◉◯◯  ◯◯◯◉◯◯◯  ◉◯◉◯◯◯◯
◯◯◯◯◯◯◯  ◯◉◯◯◯◯◯  ◉◯◉◉◉◉◯
◉◯◉◯◯◉◉  ◯◉◯◯◯◯◯  ◯◯◯◉◉◯◯
◯◯◉◯◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 7, 9, 14, 16, 17, 18, 19, 24, 25, 29, 31, 37, 38, 39, 40, 41, 45, 46, 47, 48]
StringLegalActions() = ["a1", "b1", "c1", "d1", "a2", "c2", "a3", "c3", "d3", "e3", "f3", "d4", "e4", "b5", "d5", "c6", "d6", "e6", "f6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "a3"
action: 14

# State 15
#         a b c d
#      1 . . . . e
#     2 . @ . O @ f
#    3[O]O . . . . g
#   4 @ O @ . . @ @
#    5 . @ . O O O
#     6 . . . . .
#      7 . . . .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14"
ObservationString(0) = "        a b c d\n     1 . . . . e\n    2 . @ . O @ f\n   3[O]O . . . . g\n  4 @ O @ . . @ @\n   5 . @ . O O O\n    6 . . . . .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 . . . . e\n    2 . @ . O @ f\n   3[O]O . . . . g\n  4 @ O @ . . @ @\n   5 . @ . O O O\n    6 . . . . .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 . . . . e\n    2 . @ . O @ f\n   3[O]O . . . . g\n  4 @ O @ . . @ @\n   5 . @ . O O O\n    6 . . . . .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◉◯◯◯◯
◉◉◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◯
◯◉◯◯◯◯◯  ◉◯◉◯◯◉◉  ◯◯◯◉◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◯◯◯◯  ◯◉◯◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◉◯◯◉◯◯  ◯◯◯◉◯◯◯  ◉◯◉◯◯◯◯
◯◯◯◯◯◯◯  ◉◉◯◯◯◯◯  ◯◯◉◉◉◉◯
◉◯◉◯◯◉◉  ◯◉◯◯◯◯◯  ◯◯◯◉◉◯◯
◯◯◉◯◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 7, 9, 16, 17, 18, 19, 24, 25, 29, 31, 37, 38, 39, 40, 41, 45, 46, 47, 48]
StringLegalActions() = ["a1", "b1", "c1", "d1", "a2", "c2", "c3", "d3", "e3", "f3", "d4", "e4", "b5", "d5", "c6", "d6", "e6", "f6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "d4"
action: 24

# State 16
#         a b c d
#      1 . . . . e
#     2 . @ . O @ f
#    3 O O . . . . g
#   4 @ O @[@]. @ @
#    5 . @ . O O O
#     6 . . . . .
#      7 . . . .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24"
ObservationString(0) = "        a b c d\n     1 . . . . e\n    2 . @ . O @ f\n   3 O O . . . . g\n  4 @ O @[@]. @ @\n   5 . @ . O O O\n    6 . . . . .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 . . . . e\n    2 . @ . O @ f\n   3 O O . . . . g\n  4 @ O @[@]. @ @\n   5 . @ . O O O\n    6 . . . . .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 . . . . e\n    2 . @ . O @ f\n   3 O O . . . . g\n  4 @ O @[@]. @ @\n   5 . @ . O O O\n    6 . . . . .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◉◯◯◯◯
◉◉◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◯
◯◉◯◯◯◯◯  ◉◯◉◉◯◉◉  ◯◯◯◯◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◯◯◯◯  ◯◉◯◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◉◯◯◉◯◯  ◯◯◯◉◯◯◯  ◉◯◉◯◯◯◯
◯◯◯◯◯◯◯  ◉◉◯◯◯◯◯  ◯◯◉◉◉◉◯
◉◯◉◉◯◉◉  ◯◉◯◯◯◯◯  ◯◯◯◯◉◯◯
◯◯◉◯◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 7, 9, 16, 17, 18, 19, 25, 29, 31, 37, 38, 39, 40, 41, 45, 46, 47, 48]
StringLegalActions() = ["a1", "b1", "c1", "d1", "a2", "c2", "c3", "d3", "e3", "f3", "e4", "b5", "d5", "c6", "d6", "e6", "f6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "f3"
action: 19

# State 17
#         a b c d
#      1 . . . . e
#     2 . @ . O @ f
#    3 O O . . .[O] g
#   4 @ O @ @ . @ @
#    5 . @ . O O O
#     6 . . . . .
#      7 . . . .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19"
ObservationString(0) = "        a b c d\n     1 . . . . e\n    2 . @ . O @ f\n   3 O O . . .[O] g\n  4 @ O @ @ . @ @\n   5 . @ . O O O\n    6 . . . . .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 . . . . e\n    2 . @ . O @ f\n   3 O O . . .[O] g\n  4 @ O @ @ . @ @\n   5 . @ . O O O\n    6 . . . . .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 . . . . e\n    2 . @ . O @ f\n   3 O O . . .[O] g\n  4 @ O @ @ . @ @\n   5 . @ . O O O\n    6 . . . . .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◯◯◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◉◯◯◯◯
◉◉◯◯◯◉◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◯◯
◯◉◯◯◯◯◯  ◉◯◉◉◯◉◉  ◯◯◯◯◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◯◯◯◯  ◯◉◯◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◯◯◯
◯◉◯◯◉◯◯  ◯◯◯◉◯◯◯  ◉◯◉◯◯◯◯
◯◯◯◯◯◯◯  ◉◉◯◯◯◉◯  ◯◯◉◉◉◯◯
◉◯◉◉◯◉◉  ◯◉◯◯◯◯◯  ◯◯◯◯◉◯◯
◯◯◉◯◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 7, 9, 16, 17, 18, 25, 29, 31, 37, 38, 39, 40, 41, 45, 46, 47, 48]
StringLegalActions() = ["a1", "b1", "c1", "d1", "a2", "c2", "c3", "d3", "e3", "e4", "b5", "d5", "c6", "d6", "e6", "f6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "d1"
action: 3

# State 18
#         a b c d
#      1 . . .[@] e
#     2 . @ . O @ f
#    3 O O . . . O g
#   4 @ O @ @ . @ @
#    5 . @ . O O O
#     6 . . . . .
#      7 . . . .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3"
ObservationString(0) = "        a b c d\n     1 . . .[@] e\n    2 . @ . O @ f\n   3 O O . . . O g\n  4 @ O @ @ . @ @\n   5 . @ . O O O\n    6 . . . . .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 . . .[@] e\n    2 . @ . O @ f\n   3 O O . . . O g\n  4 @ O @ @ . @ @\n   5 . @ . O O O\n    6 . . . . .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 . . .[@] e\n    2 . @ . O @ f\n   3 O O . . . O g\n  4 @ O @ @ . @ @\n   5 . @ . O O O\n    6 . . . . .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◉◯◯◯  ◉◉◉◯◯◯◯
◯◯◯◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◉◯◯◯◯
◉◉◯◯◯◉◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◯◯
◯◉◯◯◯◯◯  ◉◯◉◉◯◉◉  ◯◯◯◯◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◯◯◯◯  ◯◉◯◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◉◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◯◯◯◯
◯◉◯◯◉◯◯  ◯◯◯◉◯◯◯  ◉◯◉◯◯◯◯
◯◯◯◯◯◯◯  ◉◉◯◯◯◉◯  ◯◯◉◉◉◯◯
◉◯◉◉◯◉◉  ◯◉◯◯◯◯◯  ◯◯◯◯◉◯◯
◯◯◉◯◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 7, 9, 16, 17, 18, 25, 29, 31, 37, 38, 39, 40, 41, 45, 46, 47, 48]
StringLegalActions() = ["a1", "b1", "c1", "a2", "c2", "c3", "d3", "e3", "e4", "b5", "d5", "c6", "d6", "e6", "f6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "f6"
action: 40

# State 19
#         a b c d
#      1 . . . @ e
#     2 . @ . O @ f
#    3 O O . . . O g
#   4 @ O @ @ . @ @
#    5 . @ . O O O
#     6 . . .[O].
#      7 . . . .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40"
ObservationString(0) = "        a b c d\n     1 . . . @ e\n    2 . @ . O @ f\n   3 O O . . . O g\n  4 @ O @ @ . @ @\n   5 . @ . O O O\n    6 . . .[O].\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 . . . @ e\n    2 . @ . O @ f\n   3 O O . . . O g\n  4 @ O @ @ . @ @\n   5 . @ . O O O\n    6 . . .[O].\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 . . . @ e\n    2 . @ . O @ f\n   3 O O . . . O g\n  4 @ O @ @ . @ @\n   5 . @ . O O O\n    6 . . .[O].\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◉◯◯◯  ◉◉◉◯◯◯◯
◯◯◯◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◉◯◯◯◯
◉◉◯◯◯◉◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◯◯
◯◉◯◯◯◯◯  ◉◯◉◉◯◉◉  ◯◯◯◯◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◯◯◯◯  ◯◉◯◉◯◯◯
◯◯◯◯◯◉◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◯◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◉◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◯◯◯◯
◯◉◯◯◉◯◯  ◯◯◯◉◯◯◯  ◉◯◉◯◯◯◯
◯◯◯◯◯◯◯  ◉◉◯◯◯◉◯  ◯◯◉◉◉◯◯
◉◯◉◉◯◉◉  ◯◉◯◯◯◯◯  ◯◯◯◯◉◯◯
◯◯◉◯◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◉◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◉◯  ◯◯◉◉◉◯◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 7, 9, 16, 17, 18, 25, 29, 31, 37, 38, 39, 41, 45, 46, 47, 48]
StringLegalActions() = ["a1", "b1", "c1", "a2", "c2", "c3", "d3", "e3", "e4", "b5", "d5", "c6", "d6", "e6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "d5"
action: 31

# State 20
#         a b c d
#      1 . . . @ e
#     2 . @ . O @ f
#    3 O O . . . O g
#   4 @ O @ @ . @ @
#    5 . @[@]O O O
#     6 . . . O .
#      7 . . . .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31"
ObservationString(0) = "        a b c d\n     1 . . . @ e\n    2 . @ . O @ f\n   3 O O . . . O g\n  4 @ O @ @ . @ @\n   5 . @[@]O O O\n    6 . . . O .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 . . . @ e\n    2 . @ . O @ f\n   3 O O . . . O g\n  4 @ O @ @ . @ @\n   5 . @[@]O O O\n    6 . . . O .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 . . . @ e\n    2 . @ . O @ f\n   3 O O . . . O g\n  4 @ O @ @ . @ @\n   5 . @[@]O O O\n    6 . . . O .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◉◯◯◯  ◉◉◉◯◯◯◯
◯◯◯◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◉◯◯◯◯
◉◉◯◯◯◉◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◯◯
◯◉◯◯◯◯◯  ◉◯◉◉◯◉◉  ◯◯◯◯◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◉◯◯◯  ◯◉◯◯◯◯◯
◯◯◯◯◯◉◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◯◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◉◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◯◯◯◯
◯◉◯◯◉◯◯  ◯◯◯◉◯◯◯  ◉◯◉◯◯◯◯
◯◯◯◯◯◯◯  ◉◉◯◯◯◉◯  ◯◯◉◉◉◯◯
◉◯◉◉◯◉◉  ◯◉◯◯◯◯◯  ◯◯◯◯◉◯◯
◯◯◉◉◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◯◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◉◯  ◯◯◉◉◉◯◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 7, 9, 16, 17, 18, 25, 29, 37, 38, 39, 41, 45, 46, 47, 48]
StringLegalActions() = ["a1", "b1", "c1", "a2", "c2", "c3", "d3", "e3", "e4", "b5", "c6", "d6", "e6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "a1"
action: 0

# State 21
#         a b c d
#      1[O]. . @ e
#     2 . @ . O @ f
#    3 O O . . . O g
#   4 @ O @ @ . @ @
#    5 . @ @ O O O
#     6 . . . O .
#      7 . . . .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0"
ObservationString(0) = "        a b c d\n     1[O]. . @ e\n    2 . @ . O @ f\n   3 O O . . . O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . . . O .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1[O]. . @ e\n    2 . @ . O @ f\n   3 O O . . . O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . . . O .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1[O]. . @ e\n    2 . @ . O @ f\n   3 O O . . . O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . . . O .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◉◯◯◯◯◯◯  ◯◯◯◉◯◯◯  ◯◉◉◯◯◯◯
◯◯◯◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◉◯◯◯◯
◉◉◯◯◯◉◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◯◯
◯◉◯◯◯◯◯  ◉◯◉◉◯◉◉  ◯◯◯◯◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◉◯◯◯  ◯◉◯◯◯◯◯
◯◯◯◯◯◉◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◯◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◉◯◯◯  ◉◯◯◯◯◯◯  ◯◉◉◯◯◯◯
◯◉◯◯◉◯◯  ◯◯◯◉◯◯◯  ◉◯◉◯◯◯◯
◯◯◯◯◯◯◯  ◉◉◯◯◯◉◯  ◯◯◉◉◉◯◯
◉◯◉◉◯◉◉  ◯◉◯◯◯◯◯  ◯◯◯◯◉◯◯
◯◯◉◉◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◯◯◯◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◉◯  ◯◯◉◉◉◯◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [1, 2, 7, 9, 16, 17, 18, 25, 29, 37, 38, 39, 41, 45, 46, 47, 48]
StringLegalActions() = ["b1", "c1", "a2", "c2", "c3", "d3", "e3", "e4", "b5", "c6", "d6", "e6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "d6"
action: 38

# State 22
#         a b c d
#      1 O . . @ e
#     2 . @ . O @ f
#    3 O O . . . O g
#   4 @ O @ @ . @ @
#    5 . @ @ O O O
#     6 .[@]. O .
#      7 . . . .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38"
ObservationString(0) = "        a b c d\n     1 O . . @ e\n    2 . @ . O @ f\n   3 O O . . . O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 .[@]. O .\n     7 . . . .\n"
ObservationString(1) = "        a b c d\n     1 O . . @ e\n    2 . @ . O @ f\n   3 O O . . . O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 .[@]. O .\n     7 . . . .\n"
PublicObservationString() = "        a b c d\n     1 O . . @ e\n    2 . @ . O @ f\n   3 O O . . . O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 .[@]. O .\n     7 . . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◉◯◯◯◯◯◯  ◯◯◯◉◯◯◯  ◯◉◉◯◯◯◯
◯◯◯◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◉◯◯◯◯
◉◉◯◯◯◉◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◯◯
◯◉◯◯◯◯◯  ◉◯◉◉◯◉◉  ◯◯◯◯◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◉◯◯◯  ◯◉◯◯◯◯◯
◯◯◯◯◯◉◯  ◯◯◯◉◯◯◯  ◯◯◉◯◉◯◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
ObservationTensor(1):
◯◯◯◉◯◯◯  ◉◯◯◯◯◯◯  ◯◉◉◯◯◯◯
◯◉◯◯◉◯◯  ◯◯◯◉◯◯◯  ◉◯◉◯◯◯◯
◯◯◯◯◯◯◯  ◉◉◯◯◯◉◯  ◯◯◉◉◉◯◯
◉◯◉◉◯◉◉  ◯◉◯◯◯◯◯  ◯◯◯◯◉◯◯
◯◯◉◉◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◯◯◯◯
◯◯◯◉◯◯◯  ◯◯◯◯◯◉◯  ◯◯◉◯◉◯◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [1, 2, 7, 9, 16, 17, 18, 25, 29, 37, 39, 41, 45, 46, 47, 48]
StringLegalActions() = ["b1", "c1", "a2", "c2", "c3", "d3", "e3", "e4", "b5", "c6", "e6", "g6", "d7", "e7", "f7", "g7"]

# Apply action "d7"
action: 45

# State 23
#         a b c d
#      1 O . . @ e
#     2 . @ . O @ f
#    3 O O . . . O g
#   4 @ O @ @ . @ @
#    5 . @ @ O O O
#     6 . @ . O .
#      7[O]. . .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45"
ObservationString(0) = "        a b c d\n     1 O . . @ e\n    2 . @ . O @ f\n   3 O O . . . O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . @ . O .\n     7[O]. . .\n"
ObservationString(1) = "        a b c d\n     1 O . . @ e\n    2 . @ . O @ f\n   3 O O . . . O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . @ . O .\n     7[O]. . .\n"
PublicObservationString() = "        a b c d\n     1 O . . @ e\n    2 . @ . O @ f\n   3 O O . . . O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . @ . O .\n     7[O]. . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◉◯◯◯◯◯◯  ◯◯◯◉◯◯◯  ◯◉◉◯◯◯◯
◯◯◯◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◉◯◯◯◯
◉◉◯◯◯◉◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◯◯
◯◉◯◯◯◯◯  ◉◯◉◉◯◉◉  ◯◯◯◯◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◉◯◯◯  ◯◉◯◯◯◯◯
◯◯◯◯◯◉◯  ◯◯◯◉◯◯◯  ◯◯◉◯◉◯◉
◯◯◯◉◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◯◉◉◉
ObservationTensor(1):
◯◯◯◉◯◯◯  ◉◯◯◯◯◯◯  ◯◉◉◯◯◯◯
◯◉◯◯◉◯◯  ◯◯◯◉◯◯◯  ◉◯◉◯◯◯◯
◯◯◯◯◯◯◯  ◉◉◯◯◯◉◯  ◯◯◉◉◉◯◯
◉◯◉◉◯◉◉  ◯◉◯◯◯◯◯  ◯◯◯◯◉◯◯
◯◯◉◉◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◯◯◯◯
◯◯◯◉◯◯◯  ◯◯◯◯◯◉◯  ◯◯◉◯◉◯◉
◯◯◯◯◯◯◯  ◯◯◯◉◯◯◯  ◯◯◯◯◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [1, 2, 7, 9, 16, 17, 18, 25, 29, 37, 39, 41, 46, 47, 48]
StringLegalActions() = ["b1", "c1", "a2", "c2", "c3", "d3", "e3", "e4", "b5", "c6", "e6", "g6", "e7", "f7", "g7"]

# Apply action "e6"
action: 39

# State 24
#         a b c d
#      1 O . . @ e
#     2 . @ . O @ f
#    3 O O . . . O g
#   4 @ O @ @ . @ @
#    5 . @ @ O O O
#     6 . @[@]O .
#      7 O . . .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39"
ObservationString(0) = "        a b c d\n     1 O . . @ e\n    2 . @ . O @ f\n   3 O O . . . O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . @[@]O .\n     7 O . . .\n"
ObservationString(1) = "        a b c d\n     1 O . . @ e\n    2 . @ . O @ f\n   3 O O . . . O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . @[@]O .\n     7 O . . .\n"
PublicObservationString() = "        a b c d\n     1 O . . @ e\n    2 . @ . O @ f\n   3 O O . . . O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . @[@]O .\n     7 O . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◉◯◯◯◯◯◯  ◯◯◯◉◯◯◯  ◯◉◉◯◯◯◯
◯◯◯◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◉◯◯◯◯
◉◉◯◯◯◉◯  ◯◯◯◯◯◯◯  ◯◯◉◉◉◯◯
◯◉◯◯◯◯◯  ◉◯◉◉◯◉◉  ◯◯◯◯◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◉◯◯◯  ◯◉◯◯◯◯◯
◯◯◯◯◯◉◯  ◯◯◯◉◉◯◯  ◯◯◉◯◯◯◉
◯◯◯◉◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◯◉◉◉
ObservationTensor(1):
◯◯◯◉◯◯◯  ◉◯◯◯◯◯◯  ◯◉◉◯◯◯◯
◯◉◯◯◉◯◯  ◯◯◯◉◯◯◯  ◉◯◉◯◯◯◯
◯◯◯◯◯◯◯  ◉◉◯◯◯◉◯  ◯◯◉◉◉◯◯
◉◯◉◉◯◉◉  ◯◉◯◯◯◯◯  ◯◯◯◯◉◯◯
◯◯◉◉◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◯◯◯◯
◯◯◯◉◉◯◯  ◯◯◯◯◯◉◯  ◯◯◉◯◯◯◉
◯◯◯◯◯◯◯  ◯◯◯◉◯◯◯  ◯◯◯◯◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [1, 2, 7, 9, 16, 17, 18, 25, 29, 37, 41, 46, 47, 48]
StringLegalActions() = ["b1", "c1", "a2", "c2", "c3", "d3", "e3", "e4", "b5", "c6", "g6", "e7", "f7", "g7"]

# Apply action "e3"
action: 18

# State 25
#         a b c d
#      1 O . . @ e
#     2 . @ . O @ f
#    3 O O . .[O]O g
#   4 @ O @ @ . @ @
#    5 . @ @ O O O
#     6 . @ @ O .
#      7 O . . .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18"
ObservationString(0) = "        a b c d\n     1 O . . @ e\n    2 . @ . O @ f\n   3 O O . .[O]O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . @ @ O .\n     7 O . . .\n"
ObservationString(1) = "        a b c d\n     1 O . . @ e\n    2 . @ . O @ f\n   3 O O . .[O]O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . @ @ O .\n     7 O . . .\n"
PublicObservationString() = "        a b c d\n     1 O . . @ e\n    2 . @ . O @ f\n   3 O O . .[O]O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . @ @ O .\n     7 O . . .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◉◯◯◯◯◯◯  ◯◯◯◉◯◯◯  ◯◉◉◯◯◯◯
◯◯◯◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◉◯◯◯◯
◉◉◯◯◉◉◯  ◯◯◯◯◯◯◯  ◯◯◉◉◯◯◯
◯◉◯◯◯◯◯  ◉◯◉◉◯◉◉  ◯◯◯◯◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◉◯◯◯  ◯◉◯◯◯◯◯
◯◯◯◯◯◉◯  ◯◯◯◉◉◯◯  ◯◯◉◯◯◯◉
◯◯◯◉◯◯◯  ◯◯◯◯◯◯◯  ◯◯◯◯◉◉◉
ObservationTensor(1):
◯◯◯◉◯◯◯  ◉◯◯◯◯◯◯  ◯◉◉◯◯◯◯
◯◉◯◯◉◯◯  ◯◯◯◉◯◯◯  ◉◯◉◯◯◯◯
◯◯◯◯◯◯◯  ◉◉◯◯◉◉◯  ◯◯◉◉◯◯◯
◉◯◉◉◯◉◉  ◯◉◯◯◯◯◯  ◯◯◯◯◉◯◯
◯◯◉◉◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◯◯◯◯
◯◯◯◉◉◯◯  ◯◯◯◯◯◉◯  ◯◯◉◯◯◯◉
◯◯◯◯◯◯◯  ◯◯◯◉◯◯◯  ◯◯◯◯◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [1, 2, 7, 9, 16, 17, 25, 29, 37, 41, 46, 47, 48]
StringLegalActions() = ["b1", "c1", "a2", "c2", "c3", "d3", "e4", "b5", "c6", "g6", "e7", "f7", "g7"]

# Apply action "f7"
action: 47

# State 26
#         a b c d
#      1 O . . @ e
#     2 . @ . O @ f
#    3 O O . . O O g
#   4 @ O @ @ . @ @
#    5 . @ @ O O O
#     6 . @ @ O .
#      7 O .[@].
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47"
ObservationString(0) = "        a b c d\n     1 O . . @ e\n    2 . @ . O @ f\n   3 O O . . O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . @ @ O .\n     7 O .[@].\n"
ObservationString(1) = "        a b c d\n     1 O . . @ e\n    2 . @ . O @ f\n   3 O O . . O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . @ @ O .\n     7 O .[@].\n"
PublicObservationString() = "        a b c d\n     1 O . . @ e\n    2 . @ . O @ f\n   3 O O . . O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . @ @ O .\n     7 O .[@].\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◉◯◯◯◯◯◯  ◯◯◯◉◯◯◯  ◯◉◉◯◯◯◯
◯◯◯◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◉◯◯◯◯
◉◉◯◯◉◉◯  ◯◯◯◯◯◯◯  ◯◯◉◉◯◯◯
◯◉◯◯◯◯◯  ◉◯◉◉◯◉◉  ◯◯◯◯◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◉◯◯◯  ◯◉◯◯◯◯◯
◯◯◯◯◯◉◯  ◯◯◯◉◉◯◯  ◯◯◉◯◯◯◉
◯◯◯◉◯◯◯  ◯◯◯◯◯◉◯  ◯◯◯◯◉◯◉
ObservationTensor(1):
◯◯◯◉◯◯◯  ◉◯◯◯◯◯◯  ◯◉◉◯◯◯◯
◯◉◯◯◉◯◯  ◯◯◯◉◯◯◯  ◉◯◉◯◯◯◯
◯◯◯◯◯◯◯  ◉◉◯◯◉◉◯  ◯◯◉◉◯◯◯
◉◯◉◉◯◉◉  ◯◉◯◯◯◯◯  ◯◯◯◯◉◯◯
◯◯◉◉◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◯◯◯◯
◯◯◯◉◉◯◯  ◯◯◯◯◯◉◯  ◯◯◉◯◯◯◉
◯◯◯◯◯◉◯  ◯◯◯◉◯◯◯  ◯◯◯◯◉◯◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [1, 2, 7, 9, 16, 17, 25, 29, 37, 41, 46, 48]
StringLegalActions() = ["b1", "c1", "a2", "c2", "c3", "d3", "e4", "b5", "c6", "g6", "e7", "g7"]

# Apply action "g6"
action: 41

# State 27
#         a b c d
#      1 O . . @ e
#     2 . @ . O @ f
#    3 O O . . O O g
#   4 @ O @ @ . @ @
#    5 . @ @ O O O
#     6 . @ @ O[O]
#      7 O . @ .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41"
ObservationString(0) = "        a b c d\n     1 O . . @ e\n    2 . @ . O @ f\n   3 O O . . O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . @ @ O[O]\n     7 O . @ .\n"
ObservationString(1) = "        a b c d\n     1 O . . @ e\n    2 . @ . O @ f\n   3 O O . . O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . @ @ O[O]\n     7 O . @ .\n"
PublicObservationString() = "        a b c d\n     1 O . . @ e\n    2 . @ . O @ f\n   3 O O . . O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . @ @ O[O]\n     7 O . @ .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◉◯◯◯◯◯◯  ◯◯◯◉◯◯◯  ◯◉◉◯◯◯◯
◯◯◯◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◉◯◯◯◯
◉◉◯◯◉◉◯  ◯◯◯◯◯◯◯  ◯◯◉◉◯◯◯
◯◉◯◯◯◯◯  ◉◯◉◉◯◉◉  ◯◯◯◯◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◉◯◯◯  ◯◉◯◯◯◯◯
◯◯◯◯◯◉◉  ◯◯◯◉◉◯◯  ◯◯◉◯◯◯◯
◯◯◯◉◯◯◯  ◯◯◯◯◯◉◯  ◯◯◯◯◉◯◉
ObservationTensor(1):
◯◯◯◉◯◯◯  ◉◯◯◯◯◯◯  ◯◉◉◯◯◯◯
◯◉◯◯◉◯◯  ◯◯◯◉◯◯◯  ◉◯◉◯◯◯◯
◯◯◯◯◯◯◯  ◉◉◯◯◉◉◯  ◯◯◉◉◯◯◯
◉◯◉◉◯◉◉  ◯◉◯◯◯◯◯  ◯◯◯◯◉◯◯
◯◯◉◉◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◯◯◯◯
◯◯◯◉◉◯◯  ◯◯◯◯◯◉◉  ◯◯◉◯◯◯◯
◯◯◯◯◯◉◯  ◯◯◯◉◯◯◯  ◯◯◯◯◉◯◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [1, 2, 7, 9, 16, 17, 25, 29, 37, 46, 48]
StringLegalActions() = ["b1", "c1", "a2", "c2", "c3", "d3", "e4", "b5", "c6", "e7", "g7"]

# Apply action "c1"
action: 2

# State 28
#         a b c d
#      1 O .[@]@ e
#     2 . @ . O @ f
#    3 O O . . O O g
#   4 @ O @ @ . @ @
#    5 . @ @ O O O
#     6 . @ @ O O
#      7 O . @ .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2"
ObservationString(0) = "        a b c d\n     1 O .[@]@ e\n    2 . @ . O @ f\n   3 O O . . O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . @ @ O O\n     7 O . @ .\n"
ObservationString(1) = "        a b c d\n     1 O .[@]@ e\n    2 . @ . O @ f\n   3 O O . . O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . @ @ O O\n     7 O . @ .\n"
PublicObservationString() = "        a b c d\n     1 O .[@]@ e\n    2 . @ . O @ f\n   3 O O . . O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . @ @ O O\n     7 O . @ .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◉◯◯◯◯◯◯  ◯◯◉◉◯◯◯  ◯◉◯◯◯◯◯
◯◯◯◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◉◯◯◯◯
◉◉◯◯◉◉◯  ◯◯◯◯◯◯◯  ◯◯◉◉◯◯◯
◯◉◯◯◯◯◯  ◉◯◉◉◯◉◉  ◯◯◯◯◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◉◯◯◯  ◯◉◯◯◯◯◯
◯◯◯◯◯◉◉  ◯◯◯◉◉◯◯  ◯◯◉◯◯◯◯
◯◯◯◉◯◯◯  ◯◯◯◯◯◉◯  ◯◯◯◯◉◯◉
ObservationTensor(1):
◯◯◉◉◯◯◯  ◉◯◯◯◯◯◯  ◯◉◯◯◯◯◯
◯◉◯◯◉◯◯  ◯◯◯◉◯◯◯  ◉◯◉◯◯◯◯
◯◯◯◯◯◯◯  ◉◉◯◯◉◉◯  ◯◯◉◉◯◯◯
◉◯◉◉◯◉◉  ◯◉◯◯◯◯◯  ◯◯◯◯◉◯◯
◯◯◉◉◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◯◯◯◯
◯◯◯◉◉◯◯  ◯◯◯◯◯◉◉  ◯◯◉◯◯◯◯
◯◯◯◯◯◉◯  ◯◯◯◉◯◯◯  ◯◯◯◯◉◯◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [1, 7, 9, 16, 17, 25, 29, 37, 46, 48]
StringLegalActions() = ["b1", "a2", "c2", "c3", "d3", "e4", "b5", "c6", "e7", "g7"]

# Apply action "c2"
action: 9

# State 29
#         a b c d
#      1 O . @ @ e
#     2 . @[O]O @ f
#    3 O O . . O O g
#   4 @ O @ @ . @ @
#    5 . @ @ O O O
#     6 . @ @ O O
#      7 O . @ .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9"
ObservationString(0) = "        a b c d\n     1 O . @ @ e\n    2 . @[O]O @ f\n   3 O O . . O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . @ @ O O\n     7 O . @ .\n"
ObservationString(1) = "        a b c d\n     1 O . @ @ e\n    2 . @[O]O @ f\n   3 O O . . O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . @ @ O O\n     7 O . @ .\n"
PublicObservationString() = "        a b c d\n     1 O . @ @ e\n    2 . @[O]O @ f\n   3 O O . . O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 . @ @ O O\n     7 O . @ .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◉◯◯◯◯◯◯  ◯◯◉◉◯◯◯  ◯◉◯◯◯◯◯
◯◯◉◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◯◯◯◯◯
◉◉◯◯◉◉◯  ◯◯◯◯◯◯◯  ◯◯◉◉◯◯◯
◯◉◯◯◯◯◯  ◉◯◉◉◯◉◉  ◯◯◯◯◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◉◯◯◯  ◯◉◯◯◯◯◯
◯◯◯◯◯◉◉  ◯◯◯◉◉◯◯  ◯◯◉◯◯◯◯
◯◯◯◉◯◯◯  ◯◯◯◯◯◉◯  ◯◯◯◯◉◯◉
ObservationTensor(1):
◯◯◉◉◯◯◯  ◉◯◯◯◯◯◯  ◯◉◯◯◯◯◯
◯◉◯◯◉◯◯  ◯◯◉◉◯◯◯  ◉◯◯◯◯◯◯
◯◯◯◯◯◯◯  ◉◉◯◯◉◉◯  ◯◯◉◉◯◯◯
◉◯◉◉◯◉◉  ◯◉◯◯◯◯◯  ◯◯◯◯◉◯◯
◯◯◉◉◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◯◯◯◯
◯◯◯◉◉◯◯  ◯◯◯◯◯◉◉  ◯◯◉◯◯◯◯
◯◯◯◯◯◉◯  ◯◯◯◉◯◯◯  ◯◯◯◯◉◯◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [1, 7, 16, 17, 25, 29, 37, 46, 48]
StringLegalActions() = ["b1", "a2", "c3", "d3", "e4", "b5", "c6", "e7", "g7"]

# Apply action "c6"
action: 37

# State 30
#         a b c d
#      1 O . @ @ e
#     2 . @ O O @ f
#    3 O O . . O O g
#   4 @ O @ @ . @ @
#    5 . @ @ O O O
#     6[@]@ @ O O
#      7 O . @ .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9, 37]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9, 37"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9, 37"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9, 37"
ObservationString(0) = "        a b c d\n     1 O . @ @ e\n    2 . @ O O @ f\n   3 O O . . O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6[@]@ @ O O\n     7 O . @ .\n"
ObservationString(1) = "        a b c d\n     1 O . @ @ e\n    2 . @ O O @ f\n   3 O O . . O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6[@]@ @ O O\n     7 O . @ .\n"
PublicObservationString() = "        a b c d\n     1 O . @ @ e\n    2 . @ O O @ f\n   3 O O . . O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6[@]@ @ O O\n     7 O . @ .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◉◯◯◯◯◯◯  ◯◯◉◉◯◯◯  ◯◉◯◯◯◯◯
◯◯◉◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◯◯◯◯◯
◉◉◯◯◉◉◯  ◯◯◯◯◯◯◯  ◯◯◉◉◯◯◯
◯◉◯◯◯◯◯  ◉◯◉◉◯◉◉  ◯◯◯◯◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◉◯◯◯  ◯◉◯◯◯◯◯
◯◯◯◯◯◉◉  ◯◯◉◉◉◯◯  ◯◯◯◯◯◯◯
◯◯◯◉◯◯◯  ◯◯◯◯◯◉◯  ◯◯◯◯◉◯◉
ObservationTensor(1):
◯◯◉◉◯◯◯  ◉◯◯◯◯◯◯  ◯◉◯◯◯◯◯
◯◉◯◯◉◯◯  ◯◯◉◉◯◯◯  ◉◯◯◯◯◯◯
◯◯◯◯◯◯◯  ◉◉◯◯◉◉◯  ◯◯◉◉◯◯◯
◉◯◉◉◯◉◉  ◯◉◯◯◯◯◯  ◯◯◯◯◉◯◯
◯◯◉◉◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◯◯◯◯
◯◯◉◉◉◯◯  ◯◯◯◯◯◉◉  ◯◯◯◯◯◯◯
◯◯◯◯◯◉◯  ◯◯◯◉◯◯◯  ◯◯◯◯◉◯◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [1, 7, 16, 17, 25, 29, 46, 48]
StringLegalActions() = ["b1", "a2", "c3", "d3", "e4", "b5", "e7", "g7"]

# Apply action "d3"
action: 17

# State 31
#         a b c d
#      1 O . @ @ e
#     2 . @ O O @ f
#    3 O O .[O]O O g
#   4 @ O @ @ . @ @
#    5 . @ @ O O O
#     6 @ @ @ O O
#      7 O . @ .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9, 37, 17]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9, 37, 17"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9, 37, 17"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9, 37, 17"
ObservationString(0) = "        a b c d\n     1 O . @ @ e\n    2 . @ O O @ f\n   3 O O .[O]O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 @ @ @ O O\n     7 O . @ .\n"
ObservationString(1) = "        a b c d\n     1 O . @ @ e\n    2 . @ O O @ f\n   3 O O .[O]O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 @ @ @ O O\n     7 O . @ .\n"
PublicObservationString() = "        a b c d\n     1 O . @ @ e\n    2 . @ O O @ f\n   3 O O .[O]O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 @ @ @ O O\n     7 O . @ .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◉◯◯◯◯◯◯  ◯◯◉◉◯◯◯  ◯◉◯◯◯◯◯
◯◯◉◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◯◯◯◯◯
◉◉◯◉◉◉◯  ◯◯◯◯◯◯◯  ◯◯◉◯◯◯◯
◯◉◯◯◯◯◯  ◉◯◉◉◯◉◉  ◯◯◯◯◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◉◯◯◯  ◯◉◯◯◯◯◯
◯◯◯◯◯◉◉  ◯◯◉◉◉◯◯  ◯◯◯◯◯◯◯
◯◯◯◉◯◯◯  ◯◯◯◯◯◉◯  ◯◯◯◯◉◯◉
ObservationTensor(1):
◯◯◉◉◯◯◯  ◉◯◯◯◯◯◯  ◯◉◯◯◯◯◯
◯◉◯◯◉◯◯  ◯◯◉◉◯◯◯  ◉◯◯◯◯◯◯
◯◯◯◯◯◯◯  ◉◉◯◉◉◉◯  ◯◯◉◯◯◯◯
◉◯◉◉◯◉◉  ◯◉◯◯◯◯◯  ◯◯◯◯◉◯◯
◯◯◉◉◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◯◯◯◯
◯◯◉◉◉◯◯  ◯◯◯◯◯◉◉  ◯◯◯◯◯◯◯
◯◯◯◯◯◉◯  ◯◯◯◉◯◯◯  ◯◯◯◯◉◯◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [1, 7, 16, 25, 29, 46, 48]
StringLegalActions() = ["b1", "a2", "c3", "e4", "b5", "e7", "g7"]

# Apply action "b1"
action: 1

# State 32
#         a b c d
#      1 O[@]@ @ e
#     2 . @ O O @ f
#    3 O O . O O O g
#   4 @ O @ @ . @ @
#    5 . @ @ O O O
#     6 @ @ @ O O
#      7 O . @ .
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9, 37, 17, 1]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9, 37, 17, 1"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9, 37, 17, 1"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9, 37, 17, 1"
ObservationString(0) = "        a b c d\n     1 O[@]@ @ e\n    2 . @ O O @ f\n   3 O O . O O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 @ @ @ O O\n     7 O . @ .\n"
ObservationString(1) = "        a b c d\n     1 O[@]@ @ e\n    2 . @ O O @ f\n   3 O O . O O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 @ @ @ O O\n     7 O . @ .\n"
PublicObservationString() = "        a b c d\n     1 O[@]@ @ e\n    2 . @ O O @ f\n   3 O O . O O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 @ @ @ O O\n     7 O . @ .\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◉◯◯◯◯◯◯  ◯◉◉◉◯◯◯  ◯◯◯◯◯◯◯
◯◯◉◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◯◯◯◯◯
◉◉◯◉◉◉◯  ◯◯◯◯◯◯◯  ◯◯◉◯◯◯◯
◯◉◯◯◯◯◯  ◉◯◉◉◯◉◉  ◯◯◯◯◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◉◯◯◯  ◯◉◯◯◯◯◯
◯◯◯◯◯◉◉  ◯◯◉◉◉◯◯  ◯◯◯◯◯◯◯
◯◯◯◉◯◯◯  ◯◯◯◯◯◉◯  ◯◯◯◯◉◯◉
ObservationTensor(1):
◯◉◉◉◯◯◯  ◉◯◯◯◯◯◯  ◯◯◯◯◯◯◯
◯◉◯◯◉◯◯  ◯◯◉◉◯◯◯  ◉◯◯◯◯◯◯
◯◯◯◯◯◯◯  ◉◉◯◉◉◉◯  ◯◯◉◯◯◯◯
◉◯◉◉◯◉◉  ◯◉◯◯◯◯◯  ◯◯◯◯◉◯◯
◯◯◉◉◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◯◯◯◯
◯◯◉◉◉◯◯  ◯◯◯◯◯◉◉  ◯◯◯◯◯◯◯
◯◯◯◯◯◉◯  ◯◯◯◉◯◯◯  ◯◯◯◯◉◯◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [7, 16, 25, 29, 46, 48]
StringLegalActions() = ["a2", "c3", "e4", "b5", "e7", "g7"]

# Apply action "g7"
action: 48

# State 33
#         a b c d
#      1 O @ @ @ e
#     2 . @ O O @ f
#    3 O O . O O O g
#   4 @ O @ @ . @ @
#    5 . @ @ O O O
#     6 @ @ @ O O
#      7 O . @[O]
IsTerminal() = False
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9, 37, 17, 1, 48]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9, 37, 17, 1, 48"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9, 37, 17, 1, 48"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9, 37, 17, 1, 48"
ObservationString(0) = "        a b c d\n     1 O @ @ @ e\n    2 . @ O O @ f\n   3 O O . O O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 @ @ @ O O\n     7 O . @[O]\n"
ObservationString(1) = "        a b c d\n     1 O @ @ @ e\n    2 . @ O O @ f\n   3 O O . O O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 @ @ @ O O\n     7 O . @[O]\n"
PublicObservationString() = "        a b c d\n     1 O @ @ @ e\n    2 . @ O O @ f\n   3 O O . O O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 @ @ @ O O\n     7 O . @[O]\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◉◯◯◯◯◯◯  ◯◉◉◉◯◯◯  ◯◯◯◯◯◯◯
◯◯◉◉◯◯◯  ◯◉◯◯◉◯◯  ◉◯◯◯◯◯◯
◉◉◯◉◉◉◯  ◯◯◯◯◯◯◯  ◯◯◉◯◯◯◯
◯◉◯◯◯◯◯  ◉◯◉◉◯◉◉  ◯◯◯◯◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◉◯◯◯  ◯◉◯◯◯◯◯
◯◯◯◯◯◉◉  ◯◯◉◉◉◯◯  ◯◯◯◯◯◯◯
◯◯◯◉◯◯◉  ◯◯◯◯◯◉◯  ◯◯◯◯◉◯◯
ObservationTensor(1):
◯◉◉◉◯◯◯  ◉◯◯◯◯◯◯  ◯◯◯◯◯◯◯
◯◉◯◯◉◯◯  ◯◯◉◉◯◯◯  ◉◯◯◯◯◯◯
◯◯◯◯◯◯◯  ◉◉◯◉◉◉◯  ◯◯◉◯◯◯◯
◉◯◉◉◯◉◉  ◯◉◯◯◯◯◯  ◯◯◯◯◉◯◯
◯◯◉◉◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◯◯◯◯
◯◯◉◉◉◯◯  ◯◯◯◯◯◉◉  ◯◯◯◯◯◯◯
◯◯◯◯◯◉◯  ◯◯◯◉◯◯◉  ◯◯◯◯◉◯◯
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [7, 16, 25, 29, 46]
StringLegalActions() = ["a2", "c3", "e4", "b5", "e7"]

# Apply action "a2"
action: 7

# State 34
#         a b c d
#      1 O @ @ @ e
#     2[@]@ O O @ f
#    3 O O . O O O g
#   4 @ O @ @ . @ @
#    5 . @ @ O O O
#     6 @ @ @ O O
#      7 O . @ O
IsTerminal() = True
History() = [23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9, 37, 17, 1, 48, 7]
HistoryString() = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9, 37, 17, 1, 48, 7"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = -4
InformationStateString(0) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9, 37, 17, 1, 48, 7"
InformationStateString(1) = "23, 23, 10, 30, 22, 26, 15, 11, 33, 27, 32, 8, 34, 21, 14, 24, 19, 3, 40, 31, 0, 38, 45, 39, 18, 47, 41, 2, 9, 37, 17, 1, 48, 7"
ObservationString(0) = "        a b c d\n     1 O @ @ @ e\n    2[@]@ O O @ f\n   3 O O . O O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 @ @ @ O O\n     7 O . @ O\n"
ObservationString(1) = "        a b c d\n     1 O @ @ @ e\n    2[@]@ O O @ f\n   3 O O . O O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 @ @ @ O O\n     7 O . @ O\n"
PublicObservationString() = "        a b c d\n     1 O @ @ @ e\n    2[@]@ O O @ f\n   3 O O . O O O g\n  4 @ O @ @ . @ @\n   5 . @ @ O O O\n    6 @ @ @ O O\n     7 O . @ O\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◉◯◯◯◯◯◯  ◯◉◉◉◯◯◯  ◯◯◯◯◯◯◯
◯◯◉◉◯◯◯  ◉◉◯◯◉◯◯  ◯◯◯◯◯◯◯
◉◉◯◉◉◉◯  ◯◯◯◯◯◯◯  ◯◯◉◯◯◯◯
◯◉◯◯◯◯◯  ◉◯◉◉◯◉◉  ◯◯◯◯◉◯◯
◯◯◯◯◉◉◉  ◯◯◉◉◯◯◯  ◯◉◯◯◯◯◯
◯◯◯◯◯◉◉  ◯◯◉◉◉◯◯  ◯◯◯◯◯◯◯
◯◯◯◉◯◯◉  ◯◯◯◯◯◉◯  ◯◯◯◯◉◯◯
ObservationTensor(1):
◯◉◉◉◯◯◯  ◉◯◯◯◯◯◯  ◯◯◯◯◯◯◯
◉◉◯◯◉◯◯  ◯◯◉◉◯◯◯  ◯◯◯◯◯◯◯
◯◯◯◯◯◯◯  ◉◉◯◉◉◉◯  ◯◯◉◯◯◯◯
◉◯◉◉◯◉◉  ◯◉◯◯◯◯◯  ◯◯◯◯◉◯◯
◯◯◉◉◯◯◯  ◯◯◯◯◉◉◉  ◯◉◯◯◯◯◯
◯◯◉◉◉◯◯  ◯◯◯◯◯◉◉  ◯◯◯◯◯◯◯
◯◯◯◯◯◉◯  ◯◯◯◉◯◯◉  ◯◯◯◯◉◯◯
Rewards() = [-1.0, 1.0]
Returns() = [-1.0, 1.0]
