public static boolean isPalindrome(LinkedListNode n) {
		
		if(n == null)
			return false;
		
		Stack<Integer> half = new Stack<Integer>();
		LinkedListNode quick=n, slow=n;
		
		while(true) {
			if(quick == null || quick.next == null)
				break;
			quick = quick.next.next;
			slow = slow.next;
			half.push(slow.val);
		}
		// odd
		if(quick != null)
			slow = slow.next;
		
		while(slow != null) {
			if( half.pop() != slow.val )
				return false;
			slow = slow.next;
		}
		
		return true;
	}