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
IllllllIlIIIIl, IlIIIlllIlIll = Action.C, Action.D
IlllIIlll = (IllllllIlIIIIl, IlIIIlllIlIll)
class lIIIIllIl(Player):
    IIIIIIllllIllllI = "strategy"
    llllIIIIIlllIlIllIlI = {
        "memory_depth": 2,
        "stochastic": False,
        "long_run_time": False,
        "inspects_source": False,
        "manipulates_source": False,
        "manipulates_state": False,
    }
    def __init__(IllIllIIIIIlIlIIIl, IIIlIlIllII: str = "CCD") -> None:
        Player.__init__(IllIllIIIIIlIlIIIl)
        IllIllIIIIIlIlIIIl.IIIlIlIllII = IIIlIlIllII
        IllIllIIIIIlIlIIIl.IlIIlIIlIllIIIlIl(IIIlIlIllII=IIIlIlIllII)
    def IIlIllIlIIlllllII(IllIllIIIIIlIlIIIl, lllIllIllI: Player) -> Action:
        return next(IllIllIIIIIlIlIIIl.IllIllIlIIlIll)
    def IlIIlIIlIllIIIlIl(IllIllIIIIIlIlIIIl, IIIlIlIllII: str):
        IllIllIIIIIlIlIIIl.IIIlIlIllII = IIIlIlIllII
        IllIllIIIIIlIlIIIl.IllIllIlIIlIll = itertools.IIIlIlIllII(str_to_actions(IllIllIIIIIlIlIIIl.IIIlIlIllII))
        IllIllIIIIIlIlIIIl.llllIIIIIlllIlIllIlI["memory_depth"] = len(IIIlIlIllII) - 1