import copy
import itertools
from typing import List, Optional, Tuple
from axelrod.action import Action, actions_to_str, str_to_actions
from axelrod.evolvable_player import (
    EvolvablePlayer,
    InsufficientParametersError,
    crossover_lists,
)
from axelrod.player import Player
IIllIlIII, lIIIlllIIlIlllIIl = Action.C, Action.D
lIIlllIlllllIII = (IIllIlIII, lIIIlllIIlIlllIIl)
class lIIIlIlI(Player):
    IlllllIIllllllIllIll = "strategy"
    lIllllIIIIIllIIllII = {
        "memory_depth": float("inf"),
        "stochastic": False,
        "long_run_time": False,
        "inspects_source": False,
        "manipulates_source": False,
        "manipulates_state": False,
    }
    def __init__(IlIlIlllll) -> None:
        super().__init__()
        IlIlIlllll.IIlIIlllllIIlI = 1
        IlIlIlllll.IllllIIIIlIlllI = 0
        IlIlIlllll.IIlIllIlIll = IlIlIlllll.IllIIIIIllIlIllllIIl()
    @staticmethod
    def IllIIIIIllIlIllllIIl() -> List[Action]:
        return [IIllIlIII, lIIIlllIIlIlllIIl, lIIIlllIIlIlllIIl]
    def llIIlIlllllIlllIII(IlIlIlllll, IIIlllIIlIll: Player) -> Action:
        while IlIlIlllll.IIlIllIlIll:
            return IlIlIlllll.IIlIllIlIll.pop(0)
        if IlIlIlllll.IllllIIIIlIlllI < IlIlIlllll.IIlIIlllllIIlI:
            IlIlIlllll.IllllIIIIlIlllI += 1
            return IIllIlIII
        else:
            IlIlIlllll.IIlIIlllllIIlI += 1
            IlIlIlllll.IllllIIIIlIlllI = 0
            return lIIIlllIIlIlllIIl