#include<stdio.h>
struct node
{
    int info;
    struct node* next;
};

node* newNode(int data)
{
    struct node* temp = new node;
    temp->info = data;
    temp->next=NULL;
     return (temp);
}

node* reverse(node* start,int k)
{		
	
	node *curr=start,*prev,*next,*end;
	int i=0;
	prev=end;
	end=start;
	if(curr==NULL)
	return NULL;
	
	while(i<k &&  curr!=NULL)
	
	{
	next=curr->next;
	curr->next=prev;
	prev=curr;
	curr=next;	
	i++;
	}
	end->next=reverse(curr,k);
	return prev;	
}

void print(node* head)
{
	node* ptr=head;
	while(ptr!=NULL)
	{
		printf("%d->",ptr->info);
		ptr=ptr->next;
	}
	printf("NULL");	
}

int main()
{
	int k=2;
	
	node* head=newNode(0);
	head->next=newNode(1);
	head->next->next=newNode(2);
	head->next->next->next=newNode(3);
	head->next->next->next->next=newNode(4);
	head->next->next->next->next->next=newNode(5);
	head->next->next->next->next->next->next=newNode(6);
	head->next->next->next->next->next->next->next=newNode(7);
	head->next->next->next->next->next->next->next->next=newNode(8);
	head->next->next->next->next->next->next->next->next->next=newNode(9);
	head->next->next->next->next->next->next->next->next->next->next=newNode(10);
		
	head=reverse(head,k);
	print(head);
	return 0;
}