public static ComplexListNode copyList(ComplexListNode head){
		ComplexListNode current=head;
		while(current!=null){
			ComplexListNode tmp=new ComplexListNode(current.data);
			tmp.next=current.next;
			current.next=tmp;
			
			current=tmp.next;
		}
		
		current=head;
		while(current!=null){
			if(current.sibling!=null){
				current.next.sibling=current.sibling.next;
			}
			current=current.next.next;
		}
		
		ComplexListNode copyhead=null, last=null, copylast=null;
		if(head!=null){
			copyhead=head.next;
			current=head.next.next;
			last=head;
			copylast=copyhead;
		}
		
		while(current!=null){
			last.next=current;
			last=last.next;
			copylast.next=current.next;
			copylast=copylast.next;
			
			current=current.next.next;
		}
		
		if(last!=null){
			last.next=null;
		}
		if(copylast!=null){
			copylast.next=null;
		}
		
		return copyhead;
	}