public static String toEnglish1000(int i) {
        String[] f20  = {" zero", " one", " two", " three", " four", " five", " six", " seven", " eight", " nine", " ten", " eleven", " twelve", " thirteen", " fourteen", " fifteen", " sixteen", " seventeen", " eighteen", " nineteen"};
        String[] tens = {"ERR", "ERR", " twenty", " thirty", " forty", " fifty", " sixty", " seventy", " eighty", " ninety"};
        if (i >= 1000)
            throw new RuntimeException(i + ": not less than 1000");
        int hundreds = i/100;
        int l2 = i%100;
        if (hundreds == 0 && l2 == 0)
            return "zero";
        StringBuilder desc = new StringBuilder();
        if (hundreds > 0)
            desc.append(f20[hundreds]);
        if (l2 == 0)
            desc.append(" hundred");
        else {
            if (l2 < 20) {
                if (l2 < 10 && hundreds > 0) {
                    desc.append(f20[0]);
                }
                desc.append(f20[l2]);
            } else {
                int t = l2/10;
                int u = l2%10;
                desc.append(tens[t]);
                if (u != 0)
                    desc.append(f20[u]);
            }
        }
        return desc.toString();
    }