```
ListNode* reverseKGroup(ListNode* head, int k) {
int i=0;
ListNode* p=head;
while(p && i<k)
p=p->next, i++;
if(i<k)return head;
ListNode *t=head->next;
head->next=reverseKGroup(p,k);
while(--i)
p=t->next, t->next=head, head=t, t=p;
return head;
}
```