public RandomListNode copyRandomList(RandomListNode head) {
		 	
		 if(head == null) return null;
		 
		 HashMap<RandomListNode, RandomListNode> map = new HashMap<RandomListNode, RandomListNode>();
	     RandomListNode newHead = new RandomListNode(head.label);
	     
	     map.put(head, newHead);
	     
	     RandomListNode original = head;
	     RandomListNode copy = newHead;
	     
	     original = original.next;
	     while(original!=null){
	    	 
	    	 RandomListNode temp = new RandomListNode(original.label);
	    	 map.put(original, temp);
	    	 copy.next = temp;
	    	 copy = temp;
	    	 original = original.next;
	     }
	     
	     original = head;
	     copy = newHead;
	     
	     while(original!=null){
	    	 
	    	 if(original.random != null){
	    		 copy.random = map.get(original.random) ;
	    	 }else{
	    		 copy.random = null;
	    	 }
	    	 
	    	 original = original.next;
	    	 copy = copy.next;
	     }
        
	        return newHead;
	    }