swap(a,b) { if(b == null) return a if(b->next == null) { a->next = null; b->next = a; return b; } r = swap(b->next, b->next->next); if(r == b->next) { t = r->next; b->next = t r->next = b; a->next = r; return a; } else { a->next = r; b->next = a; return b; } }