public static LinkedListNode partition ( LinkedListNode head, int x ) {
		int		  listSize  =  getListSize(head);
		LinkedListNode  nd  =  head;
		LinkedListNode pre  =  new LinkedListNode(-1);
		pre.next  =  head;
		LinkedListNode dum  =  pre;
		for ( int i=0; i != listSize; ++i ) {
			LinkedListNode		cur = nd;
			if ( cur.data >= x ) {
				nd  =  nd.next;
			// 1. delete any element that is bigger than x.
				pre.next = cur.next;
				cur.next  = null;
			// 2. append such element to the tail.
				pre.appendToTail( cur );
			} else {
				pre  =  nd;
				nd   =  nd.next;
			}			
			System.out.println( dum.next.toString() );
		}
		return dum.next;
	}