static public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
		int advance = 0;
		ListNode h1 = l1;
		ListNode h2 = l2;
		Queue<Integer> queue = new LinkedList<Integer>();
		while(h1!=null || h2!=null) {
			int value1 = (h1==null) ? 0 : h1.val; 
			int value2 = (h2==null) ? 0 : h2.val; 
			int sum = value1 + value2 + advance;
			advance = 0;
			if(sum>9) {
				advance = sum/10;
				sum = sum % 10;
			}
			queue.add(sum);
			h1 = (h1==null) ? null : h1.next;
			h2 = (h2==null) ? null : h2.next;
		}
		if(advance!=0) {
			queue.add(advance);
		}
		ListNode result = new ListNode(queue.poll());
		ListNode node = result;
		while(!queue.isEmpty()) {
			ListNode tmpNode = new ListNode(queue.poll());
			node.next = tmpNode;
			node = tmpNode;
		}
		return result;
	}