func mergeTwoLists(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
var line1 = l1
var line2 = l2
var firstNode: ListNode?
var lastNode: ListNode?
while let temp1 = line1, let temp2 = line2 {
let isL1VSmaller = temp1.val < temp2.val
let node = ListNode(isL1VSmaller ? temp1.val : temp2.val)
if firstNode == nil {
firstNode = node
}
else {
lastNode?.next = node
}
lastNode = node
isL1VSmaller ? (line1 = temp1.next) : (line2 = temp2.next)
}
if line1 == nil {
lastNode?.next = line2
}
else {
lastNode?.next = line1
}
return firstNode != nil ? firstNode : (l1 != nil ? l1 : l2)
}