class simulation:

    def __init__(self):
        self.tick = 0
        self.lasttick = 0
        self.ableworktime = 0
        self.bakerworktime = 0
        self.ableworking = -1
        self.bakerworking = -1
        self.queue = []
        self.pashmak = None
        self.history = []
        self.works = []
        self.ableworkingnow = None
        self.bakerworkingnow = None
        
    def initpashmak(self, a, b):
        self.pashmak = Pashmak(a, b)
        
    def nexttick(self):
        workername = ''
        while (True):
            if (self.ableworking > 0):
                self.ableworking -= 1
                if (self.ableworking == 0):
                    self.ableworking = -1
                    if (self.ableworkingnow):
                        self.ableworkingnow.endtime = self.tick
                        self.works.append(self.ableworkingnow)
                    
            if (self.bakerworking > 0):
                self.bakerworking -= 1
                if (self.bakerworking == 0):
                    self.bakerworking = -1
                    if (self.bakerworkingnow):
                        self.bakerworkingnow.endtime = self.tick
                        self.works.append(self.bakerworkingnow)

            if (self.tick < self.lasttick):
                self.queue.extend(self.pashmak.queue(self.tick))
            
            if (len(self.queue) > 0 and self.ableworking == -1):
                self.ableworking = self.ableworktime
                self.ableworkingnow = self.queue.pop(0)
                self.ableworkingnow.starttime = self.tick
                self.ableworkingnow.servname = 'able'
            
            if (len(self.queue) > 0 and self.bakerworking == -1):
                self.bakerworking = self.bakerworktime
                self.bakerworkingnow = self.queue.pop(0)
                self.bakerworkingnow.starttime = self.tick
                self.bakerworkingnow.servname = 'baker'
            
            self.history.append((len(self.queue), self.ableworking, self.bakerworking))
            self.tick += 1

            if (self.tick > self.lasttick and len(self.queue) == 0 and self.ableworking == -1 and self.bakerworking == -1):
                break
 def initpashmak(self, a, b):
     self.pashmak = Pashmak(a, b)