@Override
    public Integer solve() {

        final int max = 120000;
        
        final int[] rad = new int[max];
        
        for (int i = 1; i < max; ++i) rad[i] = 1;
        for (int i = 2; i < max; ++i) {
            if (rad[i] == 1) {
                for (int j = i; j < max; j += i) rad[j] *= i;
            }
        }
        
        int sum = 0;
        
        for (int c = max; c-- > 1; ) {
            
            final int t = c / rad[c];
            
            if (t > 2) for (int a = 1, b; (b = c - a) > a; ++a) {
                if ((long)rad[a] * rad[b] < t && gcd(rad[a], rad[b]) == 1) {
                    sum += c;
                }
            }
        }

        return sum;
    }