/*
  Znajdowanie pierwiastków rzeczywistych równania axx + bx + x = 0
  Metoda rozwiązania: wyznaczenie miejsc zerowych 
     równania kwadratowego lub równania liniowego.
  Wejście: wartości przeczytane z wejścia standardowego; kolejno a, b, c
  Wyjście: wartości umieszczane na wyjściu standardowym:
    najpierw liczba rozwiązań,
    jeżeli liczba rozwiązań>0, to kolejna dana zawiera pierwsze rozwiązanie,
    jeżeli liczba rozwiązań>1, to kolejna dana zawiera drugie rozwiązanie.
  Liczba rozwiązań=-1 oznacza, ze równanie jest spełnione tożsamościowo.
  Program nie wyznacza wtedy pierwiastków.
  Ograniczenia: dane na wejściu muszą być liczbami w postaci dziesiętnej lub półlogarytmicznej.
*/

import java.io.*;

class rkw {

  double a, b, c;
  
  void rkw() {
  } /* konstruktor klasy */
  
  void czytaj() {
    czytnik we = new czytnik();
    if (!we.koniec()) 
      a = we.czytaj();
    if (!we.koniec()) 
      b = we.czytaj();
    if (!we.koniec()) 
      c = we.czytaj();
  } /* czytaj */
  
  public static void main(String[] args) {
    /* miejsce rozpoczęcia wykonywania programu */
  
    int liczbax;
    double x1 = 0.0;
    double x2 = 0.0;
    
    rkw trojmian = new rkw();

    /* pobranie danych z wejścia standardowego */
    trojmian.czytaj();
  
    /* przebieg obliczeń zaprojektowany dla wszystkich możliwych przypadków */
    if (trojmian.a != 0.0) {
      double delta;
      delta = trojmian.b*trojmian.b - 4*trojmian.a*trojmian.c;
      if (delta >= 0.0) {
        delta = Math.sqrt(delta);
        liczbax = 2;
        x1 = (-trojmian.b + delta)/(2*trojmian.a);
        x2 = (-trojmian.b - delta)/(2*trojmian.a);
      } else {
        liczbax = 0;
      }	
    } else {
      if (trojmian.b != 0.0) {
        liczbax = 1; 
	x1 = -trojmian.c/trojmian.b;
      } else {
        if (trojmian.c != 0.0) {
          liczbax = 0;
        } else {
          liczbax = -1;
        }  
      }
    }  

    /* wysłanie wyników na wyjście standardowe */
    System.out.println(liczbax);
    if (liczbax>0) {    
      System.out.println(x1);
      if (liczbax>1) {
        System.out.println(x2);
      }
    }
  } /* main */
}

class czytnik {

    public StreamTokenizer wejscie;

    public czytnik() {
	wejscie = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
    } 
    
    public double czytaj() {
      if (wejscie.ttype==StreamTokenizer.TT_NUMBER) {
          return wejscie.nval;
      } else {
        return 0.0;
      }
    }
    
    public boolean koniec() {
      boolean result = true;
      try {
        if (wejscie.nextToken() != StreamTokenizer.TT_EOF) {
          result = false;
        };    
      }
      catch (IOException ioe) {
        result = true;
      };
      return result;
    }

}

