public ListNode swapPairs(ListNode head) {
		ListNode result = new ListNode(-1);
		result.next = head;
		ListNode first = result, second = head;
		while (second != null && second.next != null) {
			ListNode newHead = second.next.next;
			// swap
			second.next.next = second;
			first.next = second.next;
			second.next = newHead;
			first = second;
			second = second.next;
		}
		return result.next;
	}