class Liste() :
    def __init__(self):
        self.l = []
    
    def ajouter_en_tete(self, e) :
        self.l.insert(0,e)
        
    def premier(self):
        return self.l[0]
        
    def reste(self):
        l = Liste()
        for i in range(len(self.l)-1, 0, -1):
            l.ajouter_en_tete(self.l[i])
        return l
        
    def est_vide(self):
        return len(self.l) == 0
    
    def __repr__(self):
        s = ""
        for e in self.l:
            s += str(e) + ","
        return s[0:-1]
    
    def __add__(self, o):
        """
        nl = Liste()
        l = self
        
        # Ajouter dans la nouvelle liste dans l'ordre inverse
        while not l.est_vide():
            nl.ajouter_en_tete(l.premier())
            l = l.reste()
        l = o
        while not l.est_vide():
            nl.ajouter_en_tete(l.premier())
            l = l.reste()
        
        ret = Liste()
        
        # Retourne la liste
        l = nl
        while not l.est_vide():
            ret.ajouter_en_tete(l.premier())
            l = l.reste()
        
        return ret
        """
        
        l = Liste()
        l.l = self.l + o.l
        return l
        
# Question 1
l = Liste()
l.ajouter_en_tete(3)
l.ajouter_en_tete(2)
l.ajouter_en_tete(1)
print(l.premier())
print(l.reste())
print(l + l)