public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        if(l1 ==null)return l2;
        if(l2 ==null)return l1;
        
        boolean carryover =false;
        ListNode tmp = new ListNode(0) ;
        ListNode head=tmp;
        while(l1 != null && l2 !=null){
            if(carryover==false){
               tmp.next = new ListNode( (l1.val+l2.val) %10);
               if(l1.val+l2.val>=10)carryover=true;
            }else{
               tmp.next = new ListNode( (l1.val+l2.val+1) %10); 
               if(l1.val+l2.val+1>=10)carryover=true;
            }
            
            
            
            tmp= tmp.next;
            l1=l1.next;
            l2=l2.next;
            
        }
        
        System.out.println(carryover);
            
        while(l1!=null){
             if(carryover==false){
               tmp.next = new ListNode( (l1.val) %10);
            }else{
               tmp.next = new ListNode( (l1.val+1) %10); 
               carryover=false;
            }
            if(l1.val+1>=10)carryover=true;
            
            tmp= tmp.next;
            l1=l1.next;
            
        }
        while(l2!=null){
             if(carryover==false){
               tmp.next = new ListNode( (l2.val) %10);
            }else{
               tmp.next = new ListNode( (l2.val+1)%10); 
               carryover=false;
            }
            if(l2.val+1>=10)carryover=true;
            
            tmp= tmp.next;
            l2=l2.next;
        }
        
      //  System.out.println(carryover);
         if(carryover){
            tmp.next = new ListNode(1);
            tmp=tmp.next;
            }
        
        return head.next;
    }