public static RandomListNode solutionII(RandomListNode head){
		
		if(head==null)
			return null;
		
		RandomListNode current = head;
		
		while(current!=null){
			
			RandomListNode new_node = new RandomListNode(current.label);
			
			new_node.next = current.next;
			current.next = new_node;
			current = new_node.next;
		}
		
		current = head;
		while(current!=null){
			if(current.random!=null){
				current.next.random = current.random.next;
			}
			current = current.next.next;
		}
		
		current = head;
		RandomListNode new_head = head.next;
		RandomListNode copied_current = new_head;
		
		while(current!=null){
			copied_current = current.next;
			current.next = copied_current.next;
			
			if(copied_current.next!=null){
				copied_current.next = copied_current.next.next;
			}
			
			current = current.next;
		}
		return new_head;
	}