public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode reNode = new ListNode(0);
        ListNode tail = reNode;

        int carry = 0;
        while(l1 != null || l2 != null){
            ListNode temp = new ListNode((carry+(l1 == null?0:l1.val)+(l2==null?0:l2.val))%10);
            carry = (carry+(l1 == null?0:l1.val)+(l2==null?0:l2.val))/10;
            tail.next = temp;
            tail = tail.next;

            if(l1 != null){
                l1 = l1.next;
            }
            if(l2 != null){
                l2 = l2.next;
            }

        }

        if(carry != 0){
            tail.next = new ListNode(carry);
        }

        return reNode.next;
    }