public Node<Integer> rearrange(Node<Integer> head) {
		if (head == null)
			return null;

		Node<Integer> fast = head;
		Node<Integer> slow = head;
		if (head.next == null) {
			return head;
		}
		while (fast.next.next != null) {
			slow = slow.next;
			fast = fast.next.next;
		}

		Node<Integer> p = head;
		while (slow.next != null && p != null) {
			Node<Integer> t = slow.next;
			slow.next = slow.next.next;
			t.next = p.next;
			p.next = t;
			p = p.next.next;
		}

		return head;

	}