import java.math.BigDecimal; import java.math.MathContext; import java.util.*; import java.io.*; import java.math.*; class Main { public static void main(String[] args) { new Main().run(); } void run() { Scanner sc = new Scanner(System.in); long a = sc.nextLong(); long b = sc.nextLong(); long c = sc.nextLong(); if (a < 0) { a *= -1; b *= -1; c *= -1; } if (a == 0 && b == 0 && c == 0) {// 0x^2+0x+0=0 System.out.println(-1); return; } else if (a == 0 && b == 0 && c != 0) {// 0x^2+0x+c=0 System.out.println(0); } else if (a == 0) {// 0x^2+bx+0=0 System.out.println(1); System.out.println((double) c / a); } else if (a != 0) { long DD = b * b - 4 * a * c; if (DD < 0) { System.out.println(0); } else if (DD == 0) { System.out.println(1); System.out.println((double) (-b) / (2 * a)); } else { System.out.println(2); System.out.println( BigDecimal.valueOf(-b).subtract(sqrt(new BigDecimal(DD), 50)).divide(BigDecimal.valueOf(2 * a)));// (double)(-b+Math.sqrt(DD))/(2*a)); System.out.println( BigDecimal.valueOf(-b).add(sqrt(new BigDecimal(DD), 50)).divide(BigDecimal.valueOf(2 * a)));// (double)(-b+Math.sqrt(DD))/(2*a)); } } // BigDecimal s2_50 = sqrt(new BigDecimal(2), 50); // System.out.println(s2_50); // System.out.println(s2_50.multiply(s2_50)); } public static BigDecimal sqrt(BigDecimal a, int scale) { // とりあえずdoubleのsqrtを求める BigDecimal x = new BigDecimal(Math.sqrt(a.doubleValue()), MathContext.DECIMAL64); if (scale < 17) return x; BigDecimal b2 = new BigDecimal(2); for (int tempScale = 16; tempScale < scale; tempScale *= 2) { // x = x - (x * x - a) / (2 * x); x = x.subtract(x.multiply(x).subtract(a).divide(x.multiply(b2), scale, BigDecimal.ROUND_HALF_EVEN)); } return x; } }