public Node reverseAlter2KNodes(Node head, int k){
		//process 2K nodes at a time
		//reverse till k nodes and set the the pointer to k+1
		int x = k;
		Node moving = head;
		Node head_prev = null;		
		Node head_next = null;
		while(x>0 && moving!=null){
			head_next = moving.next;
			moving.next = head_prev;
			head_prev = moving;
			moving = head_next;
			x--;
		}
		if(head!=null)
		head.next = moving;
		x =k;
		while(x>1 && moving!=null){
			moving = moving.next;
			x--;
		}
		if(moving!=null){
			moving.next = reverseAlter2KNodes(moving.next,k);
		}
		
		return head_prev;		
	}