public Node<Integer> add(Node<Integer> head1, Node<Integer> head2, int add) {
		if (head1 == null && head2 == null && add == 0)
			return null;
		int sum = add;
		if (head1 != null)
			sum += head1.data;
		if (head2 != null)
			sum += head2.data;
		Node<Integer> next1 = (head1 == null) ? null : head1.next;
		Node<Integer> next2 = (head2 == null) ? null : head2.next;

		Node<Integer> rest = add(next1, next2, sum >= 10 ? 1 : 0);
		Node<Integer> head = new Node<Integer>(sum % 10, rest);
		return head;
	}