public static RandomListNode copyRandomList(RandomListNode head) {
		if (head==null)
			return null;
		RandomListNode p=null;
		RandomListNode c=head;
		do {
			if (p!=null) {
				p.next=new RandomListNode(p.label);
				p.next.next=c;
			}
			p=c;
			c=c!=null?c.next:null;
		} while (p!=null);
		c=head; p=null;
		do {
			RandomListNode to=c!=null?c.random:null;
			if (to!=null) {
				c.next.random = to.next;
			}
			p=c;
			c=c!=null?c.next.next:null;
		} while (p!=null);
		RandomListNode ch=head.next;
		RandomListNode cc=ch;
		RandomListNode cp=null;
		c=head; p=null;
		do {
			if (p!=null) {
				cc = c!=null?c.next:null;
				cp = p.next;
				p.next = p.next.next;
				cp.next=cc;
			}
			p=c;
			c=c!=null?c.next.next:null;
		} while (p!=null);
		return ch;
	}