public ListNode rotateRight(ListNode head, int n) {
    	if(head == null || n == 0) return head;
        int total = 1, remain;
        ListNode tail = head, node = head;
        while(tail.next != null){
        	tail = tail.next;
        	total++;
        }
        n %= total; // fuck... I forget this situation... >.<
        remain = total - n - 1;
        while(remain > 0){
        	remain --;
        	node = node.next;
        }
        if(remain == 0){
        	tail.next = head;
        	head = node.next;
        	node.next = null;
        }
        return head;
    }