class IDUtils {
    private static final int RADIX = 36;
    private static final int IDLEN = 9;
    private static final int[] FACTOR = {29,19,1,11,7,17,13,23,5};

    private static char getChar(long number) {
        if (number < 26) {
            return (char)('a' + number);
        } else {
            return (char)('0' + number - 26);
        }
    }

    public static String toUid(long id) {<FILL_FUNCTION_BODY>}
    
    public static void main(String[] args) {
        HashSet<String> idset = new HashSet<>();
        for (long i = 0; i < 1000000000000L; i++) {
            String uid = toUid(i);
            if(!idset.add(uid)) {
                System.out.println("error, dupliate id");
                System.exit(-1);
            }
        }
    }
}

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < IDLEN; i++) {
            long bit = ((id % RADIX) * FACTOR[i] + FACTOR[i] + 5)%RADIX;
            sb.append(getChar(bit));
            id = id / RADIX;
        }
        return sb.toString();
    
<no_super_class>