Given the head of a singly linked list, group all nodes at odd positions together followed by the nodes at even positions (positions are 1-indexed), preserving the relative order within each group. Return the reordered head using O(1) extra space.