You are invited as a consultant to write software which will control an elevator. The setup includes a single elevator and several floors with a call button per floor. In the elevator there are also buttons that allow people inside to select the destination floor(s). A solution to this task could be e.g. a function that handles various events happening to the elevator. Feel free to introduce any data type definitions and helper functions. ```haskell data ElevatorEvents = Call Int | InCarriageButtonPress Int | Arrived Int | OpenedDoors | ClosedDoors data Next = elevatorControlSystem :: [ElevatorEvent] -> Next ```