import math
def alpha_beta(depth, index, max_player, values, alpha, beta):
if depth == 3:
return values[index]
func = max if max_player else min
best = -math.inf if max_player else math.inf
for i in range(2):
val = alpha_beta(depth + 1, index * 2 + i, not max_player, values, alpha, beta)
best = func(best, val)
if max_player:
alpha = max(alpha, best)
else:
beta = min(beta, best)
if beta <= alpha:
break
return best
values = [3, 5, 6, 9, 1, 2, 0, -1]
print("Optimal Value:", alpha_beta(0, 0, True, values, -math.inf, math.inf))