public static StringBuilder buildBinomialCongruence(final int a, final char x,
            final int exp, final int b, final int c, final StringBuilder lineEnd) {
        
        Algorithms.positiveCheck(exp);
        if (exp == 1)
            return buildLinearCongruence(a + b, x, -c, lineEnd);
        if (a == 0)
            return buildLinearCongruence(b, x, -c, lineEnd);
        
        final StringBuilder sb = new StringBuilder().append((a == 1) ? "" : a);
        sb.append(x).append("^");
        if (exp > 9)
            sb.append("{").append(exp).append("}");
        else
            sb.append(exp);
        
        if ((a == 1) && (b == 0))
            return sb.append(CONG).append(-c).append(lineEnd); // 'x'^2 ≡ -c (mod m)
        
        if (b != 0)
            sb.append(buildCoefficient(b, false)).append(x);
        sb.append(buildCoefficient(c, true));
        return sb.append(CONG).append("0").append(lineEnd);
    }