public RandomListNode copyRandomList(RandomListNode head) {
			if (head == null)
				return null;

			RandomListNode cur = head;
			while (cur != null) {
				RandomListNode newCreated = new RandomListNode(cur.label);
				newCreated.next = cur.next;
				cur.next = newCreated;
				cur = cur.next.next;
			}

			cur = head;
			RandomListNode dummy = new RandomListNode(Integer.MAX_VALUE);
			RandomListNode newCur = dummy;
			while (cur != null) {
				if (cur.random == null) {
					cur.next.random = null;
				} else {
					cur.next.random = cur.random.next;
				}
				cur = cur.next.next;
			}
			
			cur = head;
			while(cur!=null){
				newCur.next = cur.next;
				newCur = newCur.next;
				cur.next = cur.next.next;
				cur = cur.next;
			}
			
			newCur.next = null;
			
			return dummy.next;
		}