#include <iostream>
#include <stdlib.h>
#include <string>
#include <vector>
#include <stdio.h>
#include <math.h>
#include <algorithm>
#include <stack>
using namespace std;
int main(){
  double a,b,c;
  cin>>a>>b>>c;
  if(a==0&&b!=0&&c!=0){
    double x=-c/b;
    cout<<1<<endl;
    printf("%.10f",x);
    return 0;
  }
  if(a!=0&&b==0&&c!=0){
    if(-c/a<0){
      cout<<0;return 0;
    }
    else{
      cout<<2<<endl;
      double x2=sqrt(-c/a);
      double x1=0-x2;
       printf("%.10f",x1);
       printf("%.10f",x2);
      return 0;
    }
  }
  if(a!=0&&b!=0&&c==0){
    cout<<2<<endl;
    double x1=0.0;
    double x2=-b/a;
    if(x1<x2){
     printf("%.10f",x1);
    cout<<endl;
     printf("%.10f",x2);
      return 0;
    }
    else{
       printf("%.10f",x2);
    cout<<endl;
     printf("%.10f",x1);
      return 0;
      }
  }
  if(a==0&&b==0&&c!=0){
    cout<<0;
    return 0;
  }
  if((a==0&&c==0&&b!=0)||(a!=0&&b==0&&c==0)){
    double x=0.0;
    cout<<1<<endl;
     printf("%.10f",x);
    return 0;
    }
  if(a==0&&b==0&&c==0){
    cout<<-1;
    return 0;
  }

  double d=b*b-4*a*c;

  if(d<0){
    cout<<0;
    return 0;
  }
  if(d==0){
    cout<<1<<endl;
    double x=-b/(2*a);
    printf("%.10f",x);
  }
  if(d>0){
    cout<<2<<endl;
    double x1=(-b-sqrt(d))/(2*a);
    double x2=(-b+sqrt(d))/(2*a);
    if(x1<x2){
      printf("%.10f",x1);
      cout<<endl;
      printf("%.10f",x2);
    }
    else{
      printf("%.10f",x2);
      cout<<endl;
      printf("%.10f",x1);
      }
  }
}


#include <iostream>
#include <stdlib.h>
#include <string>
#include <vector>
#include <stdio.h>
#include <math.h>
#include <algorithm>
#include <stack>
using namespace std;
int main(){
  double a,b,c;
  cin>>a>>b>>c;
  if(a==0){
    double x=-c/b;
    cout<<1<<endl;
    printf("%.10f",x);
    return 0;
  }
  int d=b*b-4*a*c;
  if(d<0){
    cout<<0;
    return 0;
  }
  if(d==0){
    cout<<1<<endl;
    double x=-b/(2*a);
    printf("%.10f",x);
  }
  if(d>0){
    cout<<2<<endl;
    double x1=(-b-sqrt(d))/(2*a);
    double x2=(-b+sqrt(d))/(2*a);
    printf("%.10f",x1);
    cout<<endl;
    printf("%.10f",x2);
  }
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);

    if(a==0)
    {
        if(b==0 && c==0) printf("-1\n");
        else if(b==0 && c!=0) printf("0\n");
        else printf("1\n%.6lf\n",(double)-c/b);
    }
    else
    {
        double dalta=b*b-4*a*c;
        if(dalta<0) printf("0\n");
        else
        {double x3,x1=(-b+sqrt(dalta))/(2*a),x2=(-b-sqrt(dalta))/(2*a);
        if(x1-x2<=1e-6)
        {
            printf("1\n");
            printf("%lf\n",x1);
        }
        else
        {
            x3=x1<x2?x1:x2;
            x2=x1+x2-x3;
            printf("2\n");
            printf("%.6lf\n%.6lf\n",x3,x2);
        }}
    }
    return 0;
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    double dalta=b*b-4*a*c;
    if(dalta<0) printf("0\n");
    else if(a==0)
    {
        if(b==0 && c==0) printf("-1\n");
        else if(b==0 && c!=0) printf("0\n");
        else printf("1\n%.6lf\n",(double)-c/b);
    }
    else
    {
        double x3,x1=(-b+sqrt(dalta))/(2*a),x2=(-b-sqrt(dalta))/(2*a);
        if(x1-x2<=1e-6)
        {
            printf("1\n");
            printf("%lf\n",x1);
        }
        else
        {
            x3=x1<x2?x1:x2;
            x2=x1+x2-x3;
            printf("2\n");
            printf("%.6lf\n%.6lf\n",x3,x2);
        }
    }
    return 0;
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    if(a==0)
    {
        if(b==0 && c==0) printf("-1\n");
        else if(b==0 && c!=0) printf("0\n");
        else printf("1\n%.6lf\n",(double)-c/b);
    }
    else
    {
        double dalta=b*b-4*a*c;
        if(dalta<=0) printf("0\n");
        else
        {
            double x3,x1=(-b+sqrt(dalta))/(2*a),x2=(-b-sqrt(dalta))/(2*a);
            if(dalta<=1e-7)
            {
                printf("1\n");
                printf("%.6lf\n",x1);
            }
            else
            {
                x3=x1<x2?x1:x2;
                x2=x1+x2-x3;
                printf("2\n");
                printf("%.6lf\n%.6lf\n",x3,x2);
            }
        }
    }
    return 0;
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    double dalta=b*b-4*a*c;
    if(dalta<0) printf("0\n");
    else if(a==0)
    {
        if(b==0) printf("-1\n");
        else printf("1\n%.6lf\n",(double)-c/b);
    }
    else
    {
        double x3,x1=(-b+sqrt(dalta))/(2*a),x2=(-b-sqrt(dalta))/(2*a);
        if(x1-x2<=1e-6)
        {
            printf("1\n");
            printf("%lf\n",x1);
        }
        else
        {
            x3=x1<x2?x1:x2;
            x2=x1+x2-x3;
            printf("2\n");
            printf("%.6lf\n%.6lf\n",x3,x2);
        }
    }
    return 0;
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    if(a==0)
    {
        if(b==0 && c==0) printf("-1\n");
        else if(b==0 && c!=0) printf("0\n");
        else printf("1\n%lf\n",(double)-c/b);
    }
    else
    {
        double dalta=b*b-4*a*c;
        if(dalta<=0) printf("0\n");
        else
        {
            double x3,x1=(-b+sqrt(dalta))/(2*a),x2=(-b-sqrt(dalta))/(2*a);
            if(dalta<=1e-7)
            {
                printf("1\n");
                printf("%lf\n",x1);
            }
            else
            {
                x3=x1<x2?x1:x2;
                x2=x1+x2-x3;
                printf("2\n");
                printf("%lf\n%lf\n",x3,x2);
            }
        }
    }
    return 0;
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    if(a==0)
    {
        if(b==0 && c==0) printf("-1\n");
        else if(b==0 && c!=0) printf("0\n");
        else printf("1\n%lf\n",(double)-c/b);
    }
    else
    {
        double dalta=(double)b*b-4*a*c;
        if(dalta<0) printf("0\n");
        else
        {
            double x3,x1=(-b+sqrt(dalta))/(2*a),x2=(-b-sqrt(dalta))/(2*a);
            if(dalta==0)
            {
                printf("1\n");
                printf("%lf\n",x1);
            }
            else
            {
                x3=x1<x2?x1:x2;
                x2=x1+x2-x3;
                printf("2\n");
                printf("%lf\n%lf\n",x3,x2);
            }
        }
    }
    return 0;
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
    double a,b,c;
    scanf("%lf%lf%lf",&a,&b,&c);
    if(a==0)
    {
        if(b==0 && c==0) printf("-1\n");
        else if(b==0 && c!=0) printf("0\n");
        else printf("1\n%lf\n",-c/b);
    }
    else
    {
        double dalta=b*b-4*a*c;
        if(dalta<0) printf("0\n");
        else
        {
            double x3,x1=(-b+sqrt(dalta))/(2*a),x2=(-b-sqrt(dalta))/(2*a);
            if(dalta==0)
            {
                printf("1\n");
                printf("%lf\n",x1);
            }
            else
            {
                x3=x1<x2?x1:x2;
                x2=x1+x2-x3;
                printf("2\n");
                printf("%lf\n%lf\n",x3,x2);
            }
        }
    }
    return 0;
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);

    if(a==0)
    {
        if(b==0 && c==0) printf("-1\n");
        else if(b==0 && c!=0) printf("0\n");
        else printf("1\n%.6lf\n",(double)-c/b);
    }
    else
    {
        double x3,
        double dalta=b*b-4*a*c;
        if(dalta<0) printf("0\n");x1=(-b+sqrt(dalta))/(2*a),x2=(-b-sqrt(dalta))/(2*a);
        if(x1-x2<=1e-6)
        {
            printf("1\n");
            printf("%lf\n",x1);
        }
        else
        {
            x3=x1<x2?x1:x2;
            x2=x1+x2-x3;
            printf("2\n");
            printf("%.6lf\n%.6lf\n",x3,x2);
        }
    }
    return 0;
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
    int a,b,c;
    while(scanf("%d%d%d",&a,&b,&c)!=EOF)
    {if(a==0)
    {
        if(b==0 && c==0) printf("-1\n");
        else if(b==0 && c!=0) printf("-1\n");
        else printf("1\n%.6lf\n",(double)-c/b);
    }
    else
    {
        double dalta=b*b-4*a*c;
        if(dalta<0) printf("0\n");
        else
        {
            double x3,x1=(-b+sqrt(dalta))/(2*a),x2=(-b-sqrt(dalta))/(2*a);
            if(dalta<=1e-7)
            {
                printf("1\n");
                printf("%.6lf\n",x1);
            }
            else
            {
                x3=x1<x2?x1:x2;
                x2=x1+x2-x3;
                printf("2\n");
                printf("%.6lf\n%.6lf\n",x3,x2);
            }
        }
    }}
    return 0;
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    if(a==0)
    {
        if(b==0 && c==0) printf("-1\n");
        else if(b==0 && c!=0) printf("0\n");
        else printf("1\n%.6lf\n",(double)-c/b);
    }
    else
    {
        double dalta=b*b-4*a*c;
        if(dalta<0) printf("0\n");
        else
        {
            double x3,x1=(-b+sqrt(dalta))/(2*a),x2=(-b-sqrt(dalta))/(2*a);
            if(dalta<=1e-7)
            {
                printf("1\n");
                printf("%.6lf\n",x1);
            }
            else
            {
                x3=x1<x2?x1:x2;
                x2=x1+x2-x3;
                printf("2\n");
                printf("%.6lf\n%.6lf\n",x3,x2);
            }
        }
    }
    return 0;
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    if(a==0)
    {
        if(b==0 && c==0) printf("-1\n");
        else if(b==0 && c!=0) printf("0\n");
        else printf("1\n%lf\n",(double)-c/b);
    }
    else
    {
        double dalta=(double)b*b-4*a*c;
        if(dalta<=0) printf("0\n");
        else
        {
            double x3,x1=(-b+sqrt(dalta))/(2*a),x2=(-b-sqrt(dalta))/(2*a);
            if(dalta<=1e-7)
            {
                printf("1\n");
                printf("%lf\n",x1);
            }
            else
            {
                x3=x1<x2?x1:x2;
                x2=x1+x2-x3;
                printf("2\n");
                printf("%lf\n%lf\n",x3,x2);
            }
        }
    }
    return 0;
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    if(a==0)
    {
        if(b==0 && c==0) printf("-1\n");
        else if(b==0 && c!=0) printf("0\n");
        else printf("1\n%.6lf\n",(double)-c/b);
    }
    else
    {
        double dalta=b*b-4*a*c;
        if(dalta<0) printf("0\n");
        else
        {
            double x3,x1=(-b+sqrt(dalta))/(2*a),x2=(-b-sqrt(dalta))/(2*a);
            /*if(dalta<=1e-7)
            {
                printf("1\n");
                printf("%.6lf\n",x1);
            }
            else*/
            {
                x3=x1<x2?x1:x2;
                x2=x1+x2-x3;
                printf("2\n");
                printf("%.6lf\n%.6lf\n",x3,x2);
            }
        }
    }
    return 0;
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    if(a==0)
    {
        if(b==0 && c==0) printf("-1\n");
        else if(b==0 && c!=0) printf("0\n");
        else printf("1\n%.6lf\n",(double)-c/b);
    }
    else
    {
        double dalta=b*b-4*a*c;
        if(dalta<0) printf("0\n");
        else
        {
            double x3,x1=(-b+sqrt(dalta))/(2*a),x2=(-b-sqrt(dalta))/(2*a);
            if(dalta==0)
            {
                printf("1\n");
                printf("%.6lf\n",x1);
            }
            else
            {
                x3=x1<x2?x1:x2;
                x2=x1+x2-x3;
                printf("2\n");
                printf("%.6lf\n%.6lf\n",x3,x2);
            }
        }
    }
    return 0;
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    if(a==0)
    {
        if(b==0 && c==0) printf("-1\n");
        else if(b==0 && c!=0) printf("0\n");
        else printf("1\n%.6lf\n",(double)-c/b);
    }
    else
    {
        double dalta=b*b-4*a*c;
        if(dalta<0) printf("-1\n");
        else
        {
            double x3,x1=(-b+sqrt(dalta))/(2*a),x2=(-b-sqrt(dalta))/(2*a);
            if(dalta<=1e-7)
            {
                printf("1\n");
                printf("%.6lf\n",x1);
            }
            else
            {
                x3=x1<x2?x1:x2;
                x2=x1+x2-x3;
                printf("2\n");
                printf("%.6lf\n%.6lf\n",x3,x2);
            }
        }
    }
    return 0;
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    double dalta=b*b-4*a*c;
    if(dalta<0) printf("0\n");
    else if(a==0) printf("-1\n");
    else
    {
        double x3,x1=(-b+sqrt(dalta))/(2*a),x2=(-b-sqrt(dalta))/(2*a);
        if(x1-x2<=1e-6)
        {
            printf("1\n");
            printf("%lf\n",x1);
        }
        else
        {
            x3=x1<x2?x1:x2;
            x2=x1+x2-x3;
            printf("2\n");
            printf("%lf\n%lf\n",x3,x2);
        }
    }
    return 0;
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    double dalta=b*b-4*a*c;
    if(dalta<0) printf("0\n");
    else if(a==0) printf("-1\n");
    else
    {
        double x3,x1=(-b+sqrt(dalta))/(2*a),x2=(-b-sqrt(dalta))/(2*a);
        /*if(x1-x2<=1e-6)
        {
            printf("1\n");
            printf("%lf\n",x1);
        }
        else*/
        {
            x3=x1<x2?x1:x2;
            x2=x1+x2-x3;
            printf("2\n");
            printf("%lf\n%lf\n",x3,x2);
        }
    }
    return 0;
}


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <list>
#include <stack>
#include <map>
#include <set>
#include <stdio.h>
#include <string.h>
#include<math.h>
using namespace std;

#define DEBUG
#define rep(i,a) for(i=0;i<a;i++)
#define rep1(i,a,b) for(i=a;i<=b;i++)
#define VE vector<int>
#define sz size()
#define pb push_back
#define all(x) x.begin(),x.end()
/*
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
*/
int main()
{
    long a,b,c,m,i,j,k,l;
    int ans=0;
    double f,g;
    long ar[100005]={0};
    string s,s1,s2;
    cin>>a>>b>>c;
    if(a==0&&b==0&&c==0)
    {
    cout<<-1<<endl;
    return 0;
    }
    if(a==0&&b==0)
    {
        cout<<0<<endl;
        return 0;
    }
    double n=b*b-4*a*c;
    if(a==0)
    {
    cout<<1<<endl;
    printf("%.6lf\n",-(double(c)/double(b)));
    //cout<<"000000000";
    return 0;
    }
    if(n==0)
    {
    cout<<1<<endl;

    cout<<double(-b)/2*double(a)<<endl;
    cout<<"0000000";
    return 0;
    }
    if(n<0)
    {
    cout<<0<<endl;
    }
    if(n>0)
    {
    f=(double(-b)-sqrt(n))/2*double(a);
    g=(double(-b)+sqrt(n))/2*double(a);
    if(f>g)
    {
    swap(g,f);
    }
    cout<<2<<endl;
    //cout<<f<<'\n'<<g<<endl;
    printf("%.6lf\n",f);
    printf("%.6lf\n",g);
    }
    return 0;
}


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <list>
#include <stack>
#include <map>
#include <set>
#include <stdio.h>
#include <string.h>
#include<math.h>
using namespace std;

#define DEBUG
#define rep(i,a) for(i=0;i<a;i++)
#define rep1(i,a,b) for(i=a;i<=b;i++)
#define VE vector<int>
#define sz size()
#define pb push_back
#define all(x) x.begin(),x.end()
/*
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
*/
int main()
{
    long a,b,c,m,i,j,k,l;
    int ans=0;
    double f,g;
    long ar[100005]={0};
    string s,s1,s2;
    cin>>a>>b>>c;
    if(a==0&&b==0&&c==0)
    cout<<0<<endl;
    double n=b*b-4*a*c;
    if(a==0)
    {
    cout<<1<<endl;
    cout<<-(double(c)/double(b));
    }
    if(n==0)
    {
    cout<<1<<endl;
    cout<<double(-b)/2*double(a)<<endl;
    }
    if(n<0)
    {
    cout<<0<<endl;
    }
    if(n>0)
    {
    f=(double(-b)-sqrt(n))/2*double(a);
    g=(double(-b)+sqrt(n))/2*double(a);
    if(f>g)
    {
    swap(g,f);
    }
    cout<<2<<endl;
    //cout<<f<<'\n'<<g<<endl;
    printf("%.6lf\n",f);
    printf("%.6lf\n",g);
    }
    return 0;
}


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <list>
#include <stack>
#include <map>
#include <set>
#include <stdio.h>
#include <string.h>
#include<math.h>
using namespace std;

#define DEBUG
#define rep(i,a) for(i=0;i<a;i++)
#define rep1(i,a,b) for(i=a;i<=b;i++)
#define VE vector<int>
#define sz size()
#define pb push_back
#define all(x) x.begin(),x.end()
/*
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
*/
int main()
{
    long a,b,c,m,i,j,k,l;
    int ans=0;
    double f,g;
    long ar[100005]={0};
    string s,s1,s2;
    cin>>a>>b>>c;
    if(a==0&&b==0&&c==0)
{
    cout<<-1<<endl;
return 0;
}
if(a==0&&b==0)
{
cout<<0<<endl;
return 0;
}
    double n=b*b-4*a*c;
    if(a==0)
    {
    cout<<1<<endl;
    cout<<-(double(c)/double(b));
    cout<<"000000000";
    return 0;
    }
    if(n==0)
    {
    cout<<1<<endl;

    cout<<double(-b)/2*double(a)<<endl;
    cout<<"0000000";
    return 0;
    }
    if(n<0)
    {
    cout<<0<<endl;
    }
    if(n>0)
    {
    f=(double(-b)-sqrt(n))/2*double(a);
    g=(double(-b)+sqrt(n))/2*double(a);
    if(f>g)
    {
    swap(g,f);
    }
    cout<<2<<endl;
    //cout<<f<<'\n'<<g<<endl;
    printf("%.6lf\n",f);
    printf("%.6lf\n",g);
    }
    return 0;
}


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <list>
#include <stack>
#include <map>
#include <set>
#include <stdio.h>
#include <string.h>
#include<math.h>
using namespace std;

#define DEBUG
#define rep(i,a) for(i=0;i<a;i++)
#define rep1(i,a,b) for(i=a;i<=b;i++)
#define VE vector<int>
#define sz size()
#define pb push_back
#define all(x) x.begin(),x.end()
/*
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
*/
int main()
{
    double a,b,c,m,i,j,k,l;
    int ans=0;
    double f,g;
    long ar[100005]={0};
    string s,s1,s2;
    cin>>a>>b>>c;
    if(a==0&&b==0&&c==0)
    {
    cout<<-1<<endl;
    return 0;
    }
    if(a==0&&b==0)
    {
        cout<<0<<endl;
        return 0;
    }
    double n=b*b-4*a*c;
    if(a==0)
    {
    cout<<1<<endl;
    printf("%.6lf\n",-(double(c)/double(b)));
    //cout<<"000000000";
    return 0;
    }
    if(n==0)
    {
    cout<<1<<endl;

    printf("%.6lf\n",double(-b)/2*double(a));
    //cout<<"0000000";
    return 0;
    }
    if(n<0)
    {
    cout<<0<<endl;
    }
    if(n>0)
    {
    f=(double(-b)+sqrt(n))/(2*double(a));
    g=(double(-b)-sqrt(n))/(2*double(a));
    if(f>g)
    {
    swap(g,f);
    }
    cout<<2<<endl;
    //cout<<f<<'\n'<<g<<endl;
    printf("%.6lf\n",f);
    printf("%.6lf\n",g);
    }
    return 0;
}


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <list>
#include <stack>
#include <map>
#include <set>
#include <stdio.h>
#include <string.h>
#include<math.h>
using namespace std;

#define DEBUG
#define rep(i,a) for(i=0;i<a;i++)
#define rep1(i,a,b) for(i=a;i<=b;i++)
#define VE vector<int>
#define sz size()
#define pb push_back
#define all(x) x.begin(),x.end()
/*
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
*/
int main()
{
    double a,b,c,n,f,g;
    while(cin>>a>>b>>c)
    {
        if(a==0 && b==0 && c==0)
        {
            cout<<-1<<endl;
            return 0;
        }
        if(a==0&&b==0)
        {
            cout<<0<<endl;
            return 0;
        }
        if(a==0)
        {
            cout<<1<<endl;
            printf("%.10lf\n",double(-c)/double(b));
            return 0;
        }
        n=double(b*b)-double(4*a*c);
        if(n<0)
        {
            cout<<0<<endl;
            return 0;
        }
        if(n==0)
        {
            cout<<1<<endl;
            printf("%.10lf\n",(double(-b))/double(2*a));
            return 0;
        }
        if(n>0)
        {
            double f=(double(-b)-sqrt(n))/(double(2*a));
            double g=(double(-b)+sqrt(n))/(double(2*a));
            if(f>g)
            {
                swap(g,f);
            }
            cout<<2<<endl;
            printf("%.10lf\n%.10lf\n",f,g);
        }
    }
    return 0;
}


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <list>
#include <stack>
#include <map>
#include <set>
#include <stdio.h>
#include <string.h>
#include<math.h>
using namespace std;

#define DEBUG
#define rep(i,a) for(i=0;i<a;i++)
#define rep1(i,a,b) for(i=a;i<=b;i++)
#define VE vector<int>
#define sz size()
#define pb push_back
#define all(x) x.begin(),x.end()
/*
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
*/
int main()
{
    long a,b,c,m,i,j,k,l;
    int ans=0;
    double f,g;
    long ar[100005]={0};
    string s,s1,s2;
    cin>>a>>b>>c;
    if(a==0&&b==0&&c==0)
{
    cout<<-1<<endl;
return 0;
}
    double n=b*b-4*a*c;
    if(a==0)
    {
    cout<<1<<endl;
    cout<<-(double(c)/double(b));
    cout<<"000000000";
    return 0;
    }
    if(n==0)
    {
    cout<<1<<endl;

    cout<<double(-b)/2*double(a)<<endl;
    cout<<"0000000";
    return 0;
    }
    if(n<0)
    {
    cout<<0<<endl;
    }
    if(n>0)
    {
    f=(double(-b)-sqrt(n))/2*double(a);
    g=(double(-b)+sqrt(n))/2*double(a);
    if(f>g)
    {
    swap(g,f);
    }
    cout<<2<<endl;
    //cout<<f<<'\n'<<g<<endl;
    printf("%.6lf\n",f);
    printf("%.6lf\n",g);
    }
    return 0;
}


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <list>
#include <stack>
#include <map>
#include <set>
#include <stdio.h>
#include <string.h>
#include<math.h>
using namespace std;

#define DEBUG
#define rep(i,a) for(i=0;i<a;i++)
#define rep1(i,a,b) for(i=a;i<=b;i++)
#define VE vector<int>
#define sz size()
#define pb push_back
#define all(x) x.begin(),x.end()
/*
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
*/
int main()
{
    double a,b,c,m,i,j,k,l;
    int ans=0;
    double f,g;
    long ar[100005]={0};
    string s,s1,s2;
    cin>>a>>b>>c;
    if(a==0&&b==0&&c==0)
    {
    cout<<-1<<endl;
    return 0;
    }
    if(a==0&&b==0)
    {
        cout<<0<<endl;
        return 0;
    }
    double n=b*b-4*a*c;
    if(a==0)
    {
    cout<<1<<endl;
    printf("%.6lf\n",-(double(c)/double(b)));
    //cout<<"000000000";
    return 0;
    }
    if(n==0)
    {
    cout<<1<<endl;

    cout<<double(-b)/2*double(a)<<endl;
    cout<<"0000000";
    return 0;
    }
    if(n<0)
    {
    cout<<0<<endl;
    }
    if(n>0)
    {
    f=(double(-b)+sqrt(n))/2*double(a);
    g=(double(-b)-sqrt(n))/2*double(a);
    if(f>g)
    {
    swap(g,f);
    }
    cout<<2<<endl;
    //cout<<f<<'\n'<<g<<endl;
    printf("%.6lf\n",f);
    printf("%.6lf\n",g);
    }
    return 0;
}


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <list>
#include <stack>
#include <map>
#include <set>
#include <stdio.h>
#include <string.h>
#include<math.h>
#include<iomanip>
using namespace std;

#define DEBUG
#define rep(i,a) for(i=0;i<a;i++)
#define rep1(i,a,b) for(i=a;i<=b;i++)
#define VE vector<int>
#define sz size()
#define pb push_back
#define all(x) x.begin(),x.end()
/*
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
*/
int main()
{
    double a,b,c,n,f,g;
    while(cin>>a>>b>>c)
    {
        if(a==0 && b==0 && c==0)
        {
            cout<<-1<<endl;
            return 0;
        }
        if(a==0&&b==0)
        {
            cout<<0<<endl;
            return 0;
        }
        if(a==0)
        {
            cout<<1<<endl<<fixed<<setprecision(10)<<(-b/a)<<endl;
            return 0;
        }
        n=double(b*b)-double(4*a*c);
        if(n<0)
        {
            cout<<0<<endl;
            return 0;
        }
        if(n==0)
        {
            cout<<1<<endl;
            cout<<fixed<<setprecision(10)<<(-b/(2*a))<<endl;
            return 0;
        }
        if(n>0)
        {
            double f=(double(-b)-sqrt(n))/(double(2*a));
            double g=(double(-b)+sqrt(n))/(double(2*a));
            if(f>g)
            {
                swap(g,f);
            }
            cout<<2<<endl<<fixed<<setprecision(10)<<f<<endl<<g<<endl;
        }
    }
    return 0;
}


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <list>
#include <stack>
#include <map>
#include <set>
#include <stdio.h>
#include <string.h>
#include<math.h>
#include<iomanip>
using namespace std;

#define DEBUG
#define rep(i,a) for(i=0;i<a;i++)
#define rep1(i,a,b) for(i=a;i<=b;i++)
#define VE vector<int>
#define sz size()
#define pb push_back
#define all(x) x.begin(),x.end()
/*
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
*/
int main()
{
    double a,b,c,n,f,g;
    while(cin>>a>>b>>c)
    {
        if(a==0 && b==0 && c==0)
        {
            cout<<-1<<endl;
            return 0;
        }
        if(a==0&&b==0)
        {
            cout<<0<<endl;
            return 0;
        }
        if(a==0)
        {
            cout<<1<<endl<<fixed<<setprecision(10)<<(-c/b)<<endl;
            return 0;
        }
        n=double(b*b)-double(4*a*c);
        if(n<0)
        {
            cout<<0<<endl;
            return 0;
        }
        if(n==0)
        {
            cout<<1<<endl;
            cout<<fixed<<setprecision(10)<<(-b/(2*a))<<endl;
            return 0;
        }
        if(n>0)
        {
            double f=(double(-b)-sqrt(n))/(double(2*a));
            double g=(double(-b)+sqrt(n))/(double(2*a));
            if(f>g)
            {
                swap(g,f);
            }
            cout<<2<<endl<<fixed<<setprecision(10)<<f<<endl<<g<<endl;
        }
    }
    return 0;
}


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <list>
#include <stack>
#include <map>
#include <set>
#include <stdio.h>
#include <string.h>
#include<math.h>
using namespace std;

#define DEBUG
#define rep(i,a) for(i=0;i<a;i++)
#define rep1(i,a,b) for(i=a;i<=b;i++)
#define VE vector<int>
#define sz size()
#define pb push_back
#define all(x) x.begin(),x.end()
/*
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
*/
int main()
{
    double a,b,c,m,i,j,k,l;
    int ans=0;
    double f,g;
    long ar[100005]={0};
    string s,s1,s2;
    cin>>a>>b>>c;
    if(a==0&&b==0&&c==0)
    {
    cout<<-1<<endl;
    return 0;
    }
    if(a==0&&b==0)
    {
        cout<<0<<endl;
        return 0;
    }
    double n=b*b-4*a*c;
    if(a==0)
    {
    cout<<1<<endl;
    printf("%.6lf\n",-(double(c)/double(b)));
    //cout<<"000000000";
    return 0;
    }
    if(n==0)
    {
    cout<<1<<endl;

    printf("%.6lf\n",(double(-b))/(2*double(a)));
    //cout<<"0000000";
    return 0;
    }
    if(n<0)
    {
    cout<<0<<endl;
    }
    if(n>0)
    {
    f=(double(-b)+sqrt(n))/(2*double(a));
    g=(double(-b)-sqrt(n))/(2*double(a));
    if(f>g)
    {
    swap(g,f);
    }
    cout<<2<<endl;
    //cout<<f<<'\n'<<g<<endl;
    printf("%.6lf\n",f);
    printf("%.6lf\n",g);
    }
    return 0;
}


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <list>
#include <stack>
#include <map>
#include <set>
#include <stdio.h>
#include <string.h>
#include<math.h>
using namespace std;

#define DEBUG
#define rep(i,a) for(i=0;i<a;i++)
#define rep1(i,a,b) for(i=a;i<=b;i++)
#define VE vector<int>
#define sz size()
#define pb push_back
#define all(x) x.begin(),x.end()
/*
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
*/
int main()
{
    long a,b,c,m,i,j,k,l;
    int ans=0;
    double f,g;
    long ar[100005]={0};
    string s,s1,s2;
    cin>>a>>b>>c;
    if(a==0&&b==0&&c==0)
    {
    cout<<-1<<endl;
    return 0;
    }
    if(a==0&&b==0)
    {
        cout<<0<<endl;
        return 0;
    }
    double n=b*b-4*a*c;
    if(a==0)
    {
    cout<<1<<endl;
    printf("%.6lf\n",-(double(c)/double(b)));
    //cout<<"000000000";
    return 0;
    }
    if(n==0)
    {
    cout<<1<<endl;

    cout<<double(-b)/2*double(a)<<endl;
    cout<<"0000000";
    return 0;
    }
    if(n<0)
    {
    cout<<0<<endl;
    }
    if(n>0)
    {
    f=(double(-b)+sqrt(n))/2*double(a);
    g=(double(-b)-sqrt(n))/2*double(a);
    if(f>g)
    {
    swap(g,f);
    }
    cout<<2<<endl;
    //cout<<f<<'\n'<<g<<endl;
    printf("%.6lf\n",f);
    printf("%.6lf\n",g);
    }
    return 0;
}


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <list>
#include <stack>
#include <map>
#include <set>
#include <stdio.h>
#include <string.h>
#include<math.h>
using namespace std;

#define DEBUG
#define rep(i,a) for(i=0;i<a;i++)
#define rep1(i,a,b) for(i=a;i<=b;i++)
#define VE vector<int>
#define sz size()
#define pb push_back
#define all(x) x.begin(),x.end()
/*
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
*/
int main()
{
    long a,b,c,m,i,j,k,l;
    int ans=0;
    double f,g;
    long ar[100005]={0};
    string s,s1,s2;
    cin>>a>>b>>c;
    if(a==0&&b==0&&c==0)
{
    cout<<-1<<endl;
return 0;
}
if(a==0&&b==0)
{
cout<<0<<endl;
}
    double n=b*b-4*a*c;
    if(a==0)
    {
    cout<<1<<endl;
    cout<<-(double(c)/double(b));
    cout<<"000000000";
    return 0;
    }
    if(n==0)
    {
    cout<<1<<endl;

    cout<<double(-b)/2*double(a)<<endl;
    cout<<"0000000";
    return 0;
    }
    if(n<0)
    {
    cout<<0<<endl;
    }
    if(n>0)
    {
    f=(double(-b)-sqrt(n))/2*double(a);
    g=(double(-b)+sqrt(n))/2*double(a);
    if(f>g)
    {
    swap(g,f);
    }
    cout<<2<<endl;
    //cout<<f<<'\n'<<g<<endl;
    printf("%.6lf\n",f);
    printf("%.6lf\n",g);
    }
    return 0;
}


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <list>
#include <stack>
#include <map>
#include <set>
#include <stdio.h>
#include <string.h>
#include<math.h>
using namespace std;

#define DEBUG
#define rep(i,a) for(i=0;i<a;i++)
#define rep1(i,a,b) for(i=a;i<=b;i++)
#define VE vector<int>
#define sz size()
#define pb push_back
#define all(x) x.begin(),x.end()
/*
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
*/
int main()
{
    long a,b,c,m,i,j,k,l;
    int ans=0;
    double f,g;
    long ar[100005]={0};
    string s,s1,s2;
    cin>>a>>b>>c;
    if(a==0&&b==0&&c==0)
    cout<<0<<endl;
    double n=b*b-4*a*c;
    if(a==0)
    {
    cout<<1<<endl;
    cout<<-(double(c)/double(b));
    cout<<"000000000";
    return 0;
    }
    if(n==0)
    {
    cout<<1<<endl;

    cout<<double(-b)/2*double(a)<<endl;
    cout<<"0000000";
    return 0;
    }
    if(n<0)
    {
    cout<<0<<endl;
    }
    if(n>0)
    {
    f=(double(-b)-sqrt(n))/2*double(a);
    g=(double(-b)+sqrt(n))/2*double(a);
    if(f>g)
    {
    swap(g,f);
    }
    cout<<2<<endl;
    //cout<<f<<'\n'<<g<<endl;
    printf("%.6lf\n",f);
    printf("%.6lf\n",g);
    }
    return 0;
}


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <list>
#include <stack>
#include <map>
#include <set>
#include <stdio.h>
#include <string.h>
#include<math.h>
using namespace std;

#define DEBUG
#define rep(i,a) for(i=0;i<a;i++)
#define rep1(i,a,b) for(i=a;i<=b;i++)
#define VE vector<int>
#define sz size()
#define pb push_back
#define all(x) x.begin(),x.end()
/*
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
*/
int main()
{
    double a,b,c,n,f,g;
    while(cin>>a>>b>>c)
    {
        if(a==0&&b==0&&c==0)
        {
            cout<<-1<<endl;
            return 0;
        }
        if(a==0&&b==0)
        {
            cout<<0<<endl;
            return 0;
        }
        if(a==0)
        {
            cout<<1<<endl;
            printf("%.10lf\n",double(-c)/double(b));
            return 0;
        }
        n=double(b*b)-double(4*a*c);
        if(n<0)
        {
            cout<<-1<<endl;
            return 0;
        }
        if(n==0)
        {
            cout<<0<<endl;
            return 0;
        }
        if(n>0)
        {
            double f=(double(-b)-sqrt(n))/(double(2*a));
            double g=(double(-b)+sqrt(n))/(double(2*a));
            if(f>g)
            {
                swap(g,f);
            }
            cout<<2<<endl;
            printf("%.10lf\n%.10lf\n",f,g);
        }
    }
    return 0;
}


#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <string>
#include <vector>
#include <list>
#include <set>
using namespace std;

const double eps=1e-8;
double a, b, c;

int main()
{
    scanf("%lf%lf%lf", &a, &b, &c);
    if(fabs(a)>eps)
    {
        double delta=b*b-4*a*c;
        if(delta>0)
        {
            printf("2\n");
            printf("%.8lf\n", (-b-sqrt(delta))/2/a);
            printf("%.8lf\n", (-b+sqrt(delta))/2/a);
            return 0;
        }
        else
            if(fabs(delta)<eps)
            {
                printf("1\n");
                printf("%.8lf\n", -b/2/a);
                return 0;
            }
            else
            {
                printf("0\n");
                return 0;
            }
    }
    else
    {
        if(fabs(b)>eps)
        {
            printf("1\n");
            printf("%.8lf\n", -c/b);
            return 0;
        }
        else
        {
            printf("-1\n");
            return 0;
        }
    }
    return 0;
}


#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <string>
#include <vector>
#include <list>
#include <set>
using namespace std;

long long a, b, c;

int main()
{
    scanf("%I64d%I64d%I64d", &a, &b, &c);
    if(a!=0)
    {
        long long delta=b*b-4*a*c;
        if(delta>0)
        {
            printf("2\n");
            printf("%.10lf\n", (-b-sqrt(1.0*delta))/2/a);
            printf("%.10lf\n", (-b+sqrt(1.0*delta))/2/a);
            return 0;
        }
        else
            if(delta==0)
            {
                printf("1\n");
                printf("%.10lf\n", 1.0*-b/2/a);
                return 0;
            }
            else
            {
                printf("0\n");
                return 0;
            }
    }
    else
    {
        if(b!=0)
        {
            printf("1\n");
            printf("%.10lf\n", 1.0*-c/b);
            return 0;
        }
        else
        {
            printf("-1\n");
            return 0;
        }
    }
    return 0;
}


#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <string>
#include <vector>
#include <list>
#include <set>
using namespace std;

const double eps=1e-8;
double a, b, c;

int main()
{
    scanf("%lf%lf%lf", &a, &b, &c);
    if(a!=0)
    {
        double delta=b*b-4*a*c;
        if(delta>0)
        {
            printf("2\n");
            printf("%.8lf\n", (-b-sqrt(delta))/2/a);
            printf("%.8lf\n", (-b+sqrt(delta))/2/a);
            return 0;
        }
        else
            if(delta==0)
            {
                printf("1\n");
                printf("%.8lf\n", -b/2/a);
                return 0;
            }
            else
            {
                printf("0\n");
                return 0;
            }
    }
    else
    {
        if(b!=0)
        {
            printf("1\n");
            printf("%.8lf\n", -c/b);
            return 0;
        }
        else
        {
            printf("-1\n");
            return 0;
        }
    }
    return 0;
}


#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <string>
#include <vector>
#include <list>
#include <set>
using namespace std;

int a, b, c;

int main()
{
    scanf("%d%d%d", &a, &b, &c);
    if(a!=0)
    {
        int delta=b*b-4*a*c;
        if(delta>0)
        {
            printf("2\n");
            printf("%.8lf\n", (-b-sqrt(1.0*delta))/2/a);
            printf("%.8lf\n", (-b+sqrt(1.0*delta))/2/a);
            return 0;
        }
        else
            if(delta==0)
            {
                printf("1\n");
                printf("%.8lf\n", 1.0*-b/2/a);
                return 0;
            }
            else
            {
                printf("0\n");
                return 0;
            }
    }
    else
    {
        if(b!=0)
        {
            printf("1\n");
            printf("%.8lf\n", 1.0*-c/b);
            return 0;
        }
        else
        {
            printf("-1\n");
            return 0;
        }
    }
    return 0;
}


#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <string>
#include <vector>
#include <list>
#include <set>
using namespace std;

long long a, b, c;

int main()
{
    scanf("%I64d%I64d%I64d", &a, &b, &c);
    if(a!=0)
    {
        long long delta=b*b-4*a*c;
        if(delta>0)
        {
            printf("2\n");
            printf("%.10lf\n", (1.0*-b-sqrt(1.0*delta))/2/a);
            printf("%.10lf\n", (1.0*-b+sqrt(1.0*delta))/2/a);
            return 0;
        }
        else
            if(delta==0)
            {
                printf("2\n");
                printf("%.10lf\n", 1.0*-b/2/a);
                printf("%.10lf\n", 1.0*-b/2/a);
                return 0;
            }
            else
            {
                printf("0\n");
                return 0;
            }
    }
    else
    {
        if(b!=0)
        {
            printf("1\n");
            printf("%.10lf\n", 1.0*-c/b);
            return 0;
        }
        else
        {
            printf("-1\n");
            return 0;
        }
    }
    return 0;
}


#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <string>
#include <vector>
#include <list>
#include <set>
using namespace std;

long long a, b, c;

int main()
{
    scanf("%I64d%I64d%I64d", &a, &b, &c);
    if(a!=0)
    {
        long long delta=b*b-4*a*c;
        if(delta>0)
        {
            printf("2\n");
            printf("%.10lf\n", (1.0*-b-sqrt(1.0*delta))/2/a);
            printf("%.10lf\n", (1.0*-b+sqrt(1.0*delta))/2/a);
            return 0;
        }
        else
            if(delta==0)
            {
                printf("1\n");
                printf("%.10lf\n", 1.0*-b/2/a);
                return 0;
            }
            else
            {
                printf("0\n");
                return 0;
            }
    }
    else
    {
        if(b!=0)
        {
            printf("1\n");
            printf("%.10lf\n", 1.0*-c/b);
            return 0;
        }
        else
        {
            printf("-1\n");
            return 0;
        }
    }
    return 0;
}


#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <string>
#include <vector>
#include <list>
#include <set>
using namespace std;

long long a, b, c;

int main()
{
    scanf("%I64d%I64d%I64d", &a, &b, &c);
    if(a!=0)
    {
        long long delta=b*b-4*a*c;
        if(delta>0)
        {
            printf("2\n");
            printf("%.10lf\n", (1.0*-b-sqrt(1.0*delta))/2/a);
            printf("%.10lf\n", (1.0*-b+sqrt(1.0*delta))/2/a);
            return 0;
        }
        else
            if(delta==0)
            {
                printf("1\n");
                printf("%.10lf\n", 1.0*-b/2/a);
                return 0;
            }
            else
            {
                printf("0\n");
                return 0;
            }
    }
    else
    {
        if(b!=0)
        {
            printf("1\n");
            printf("%.10lf\n", 1.0*-c/b);
            return 0;
        }
        else
        {
            if(c!=0)
            {
                printf("0\n");
                return 0;
            }
            else
            {
                printf("-1\n");
                return 0;
            }
        }
    }
    return 0;
}


#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <string>
#include <vector>
#include <list>
#include <set>
using namespace std;

long long a, b, c;

int main()
{
    scanf("%I64d%I64d%I64d", &a, &b, &c);
    if(a!=0)
    {
        long long delta=b*b-4*a*c;
        if(delta>0)
        {
            printf("2\n");
            double x1=(1.0*-b-sqrt(1.0*delta))/2/a;
            double x2=(1.0*-b+sqrt(1.0*delta))/2/a;
            if(x1>x2)
                swap(x1, x2);
            printf("%.10lf\n", x1);
            printf("%.10lf\n", x2);
            return 0;
        }
        else
            if(delta==0)
            {
                printf("1\n");
                printf("%.10lf\n", 1.0*-b/2/a);
                return 0;
            }
            else
            {
                printf("0\n");
                return 0;
            }
    }
    else
    {
        if(b!=0)
        {
            printf("1\n");
            printf("%.10lf\n", 1.0*-c/b);
            return 0;
        }
        else
        {
            if(c!=0)
            {
                printf("0\n");
                return 0;
            }
            else
            {
                printf("-1\n");
                return 0;
            }
        }
    }
    return 0;
}


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
       float a,b,c;
       float x1,x2,z;

       cin>>a>>b>>c;

       z=(b*b)-(4*a*c);
       if(z<0 || (b==0 && a!=0 && c>0))
       {
           cout<<"0.00000";
           return 0;
       }

       else if(a==0 && b==0 && c!=0)
            cout<<"0";

        else if(a==0 && b==0 && c==0)
            cout<<"-1";

       else if(a==0 && b!=0)
            printf("1\n%f",-c/b);

       else if(b==0 && a!=0 && c<0)
            printf("1\n%f",sqrt(-c/a));

       else
       {
            x1=(-b+sqrt(z))/(2*a);
            x2=(-b-sqrt(z))/(2*a);

            if(x1==x2)
                printf("1\n%f",x1);
            else if(x1>x2)
                printf("2\n%f\n%f",x2,x1);
            else
               printf("2\n%f\n%f",x1,x2);
       }

        return 0;
}


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
       float a,b,c;
       float x1,x2,z;

       cin>>a>>b>>c;

       z=(b*b)-(4*a*c);
       if(z<0 || (b==0 && a!=0 && c>0))
       {
           cout<<"0.00000";
           return 0;
       }

       else if(a==0 && b==0)
            cout<<"-1";

       else if(a==0 && b!=0)
            printf("1\n%f",-c/b);

       else if(b==0 && a!=0 && c<0)
            printf("1\n%f",sqrt(-c/a));

       else
       {
            x1=(-b+sqrt(z))/(2*a);
            x2=(-b-sqrt(z))/(2*a);

            if(x1==x2)
                printf("1\n%f",x1);
            else if(x1>x2)
                printf("2\n%f\n%f",x2,x1);
            else
               printf("2\n%f\n%f",x1,x2);
       }

        return 0;
}


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
       float a,b,c;
       float x1,x2,z;

       cin>>a>>b>>c;

       z=(b*b)-(4*a*c);
       if(z<0)
       {
           cout<<"0.00000";
           return 0;
       }

       else
       {
            x1=(-b+sqrt(z))/(2*a);
            x2=(-b-sqrt(z))/(2*a);

            if(x1==x2)
                printf("1\n%f",x1);
            else if(x1>x2)
                printf("2\n%f\n%f",x2,x1);
            else
               printf("2\n%f\n%f",x1,x2);
       }

        return 0;
}


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
       float a,b,c;
       float x1,x2,z;

       cin>>a>>b>>c;

       z=(b*b)-(4*a*c);
       if(z<0)
       {
           cout<<"-1";
           return 0;
       }

       else
       {
            x1=(-b+sqrt(z))/(2*a);
            x2=(-b-sqrt(z))/(2*a);

            if(x1==x2)
                printf("1\n%f\n%f",x1,x2);
            else if(x1>x2)
                printf("2\n%f\n%f",x1,x2);
            else
               printf("2\n%f\n%f",x2,x1);
       }

        return 0;
}


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
       float a,b,c;
       float x1,x2,z;

       cin>>a>>b>>c;

       z=(b*b)-(4*a*c);
       if(z<0)
       {
           cout<<"0.00000";
           return 0;
       }

       else
       {
            x1=(-b+sqrt(z))/(2*a);
            x2=(-b-sqrt(z))/(2*a);

            if(x1==x2)
                printf("1\n%f\n%f",x1,x2);
            else if(x1>x2)
                printf("2\n%f\n%f",x2,x1);
            else
               printf("2\n%f\n%f",x1,x2);
       }

        return 0;
}


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
       float a,b,c;
       float x1,x2,z;

       cin>>a>>b>>c;

       z=(b*b)-(4*a*c);
       if(z<0 || (b==0 && a!=0 && c>0))
       {
           cout<<"0.00000";
           return 0;
       }

       else if(a==0 && b==0)
            cout<<"-1";

       else if(a==0 && b!=0)
            cout<<-c/b;

       else if(b==0 && a!=0 && c<0)
            cout<<sqrt(c/a);

       else
       {
            x1=(-b+sqrt(z))/(2*a);
            x2=(-b-sqrt(z))/(2*a);

            if(x1==x2)
                printf("1\n%f",x1);
            else if(x1>x2)
                printf("2\n%f\n%f",x2,x1);
            else
               printf("2\n%f\n%f",x1,x2);
       }

        return 0;
}


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
       float a,b,c;
       float x1,x2,z;

       cin>>a>>b>>c;

       z=(b*b)-(4*a*c);
       if(z<0)
       {
           cout<<"-1";
           return 0;
       }

       else
       {
            x1=(-b+sqrt(z))/(2*a);
            x2=(-b-sqrt(z))/(2*a);

            if(x1==x2)
                printf("1\n%f\n%f",x1,x2);
            else if(x1>x2)
                printf("2\n%f\n%f",x2,x1);
            else
               printf("2\n%f\n%f",x1,x2);
       }

        return 0;
}


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
       float a,b,c;
       float x1,x2,z;

       cin>>a>>b>>c;

       z=(b*b)-(4*a*c);
       if(z<0 || (b==0 && a!=0 && c>0))
       {
           cout<<"0.00000";
           return 0;
       }

       else if(a==0 && b==0 && c!=0)
            cout<<"0";

       else if(a==0 && b!=0)
            printf("1\n%f",-c/b);

       else if(b==0 && a!=0 && c<0)
            printf("1\n%f",sqrt(-c/a));

       else
       {
            x1=(-b+sqrt(z))/(2*a);
            x2=(-b-sqrt(z))/(2*a);

            if(x1==x2)
                printf("1\n%f",x1);
            else if(x1>x2)
                printf("2\n%f\n%f",x2,x1);
            else
               printf("2\n%f\n%f",x1,x2);
       }

        return 0;
}


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
       float a,b,c;
       float x1,x2,z;

       cin>>a>>b>>c;

       z=(b*b)-(4*a*c);
       if(z<0)
       {
           cout<<"0.00000";
           return 0;
       }

       else if(a==0)
            cout<<"-1";

       else
       {
            x1=(-b+sqrt(z))/(2*a);
            x2=(-b-sqrt(z))/(2*a);

            if(x1==x2)
                printf("1\n%f",x1);
            else if(x1>x2)
                printf("2\n%f\n%f",x2,x1);
            else
               printf("2\n%f\n%f",x1,x2);
       }

        return 0;
}


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
       float a,b,c;
       float x1,x2,z;

       cin>>a>>b>>c;

       z=(b*b)-(4*a*c);
       if(z<0 || (b==0 && a!=0 && c>0))
       {
           cout<<"0.00000";
           return 0;
       }

       else if(a==0 && b==0)
            cout<<"-1";

       else if(a==0 && b!=0)
            printf("%f",-c/b);

       else if(b==0 && a!=0 && c<0)
            printf("%f",sqrt(-c/a));

       else
       {
            x1=(-b+sqrt(z))/(2*a);
            x2=(-b-sqrt(z))/(2*a);

            if(x1==x2)
                printf("1\n%f",x1);
            else if(x1>x2)
                printf("2\n%f\n%f",x2,x1);
            else
               printf("2\n%f\n%f",x1,x2);
       }

        return 0;
}


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
       float a,b,c;
       float x1,x2,z;

       cin>>a>>b>>c;

       z=(b*b)-(4*a*c);
       if(z<0 || (b==0 && a!=0 && c>0))
       {
           cout<<"0.00000";
           return 0;
       }

       else if(a==0 && b==0)
            cout<<"0";

       else if(a==0 && b!=0)
            printf("1\n%f",-c/b);

       else if(b==0 && a!=0 && c<0)
            printf("1\n%f",sqrt(-c/a));

       else
       {
            x1=(-b+sqrt(z))/(2*a);
            x2=(-b-sqrt(z))/(2*a);

            if(x1==x2)
                printf("1\n%f",x1);
            else if(x1>x2)
                printf("2\n%f\n%f",x2,x1);
            else
               printf("2\n%f\n%f",x1,x2);
       }

        return 0;
}


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
       double a,b,c;
       double x1,x2,z;

       cin>>a>>b>>c;

       z=(b*b)-(4*a*c);
       if(z<0 || (b==0 && a!=0 && c>0))
       {
           cout<<"0.00000";
           return 0;
       }

       else if(a==0 && b==0 && c!=0)
            cout<<"0";

        else if(a==0 && b==0 && c==0)
            cout<<"-1";

       else if(a==0 && b!=0)
            printf("1\n%lf",-c/b);

       else if(b==0 && a!=0 && c<0)
            printf("1\n%lf",sqrt(-c/a));

       else
       {
            x1=(-b+sqrt(z))/(2*a);
            x2=(-b-sqrt(z))/(2*a);

            if(x1==x2)
                printf("1\n%lf",x1);
            else if(x1>x2)
                printf("2\n%lf\n%lf",x2,x1);
            else
               printf("2\n%lf\n%lf",x1,x2);
       }

        return 0;
}


#include <iostream>
#include <math.h>

using namespace std;

int main(int argc, char *argv[]){
    double a, b, c;
    cin >> a >> b >> c;
    double d = b*b-4.0*a*c;

    if(a == 0 && b == 0 && c == 0){
         cout << -1 << endl;
         return 0;
    }

    if(a == 0){
          cout << 1 << endl;
          cout << -c/b << endl;
          return 0;
    }

    if(d < 0){
         cout << -1 << endl;
         return 0;
    }else if(d == 0){
          cout << 1 << endl;
          cout << sqrt(c/a) << endl;
    }else{
          d = sqrt(d);
          cout << 2 << endl;
          cout << (-b-d)/2.0/a << endl;
          cout << (-b+d)/2.0/a << endl;
    }
    d = sqrt(d);
    return 0;
}


#include <iostream>
#include <math.h>

using namespace std;

int main(int argc, char *argv[]){
    double a, b, c;
    cin >> a >> b >> c;
    double d = b*b-4.0*a*c;
    if(d < 0){
         cout << -1 << endl;
         return 0;
    }else if(d == 0){
          cout << 1 << endl;
          cout << sqrt(c/a) << endl;
    }else{
          d = sqrt(d);
          cout << 2 << endl;
          cout << (-b+d)/2.0/a << endl;
          cout << (-b-d)/2.0/a << endl;
    }
    d = sqrt(d);
    system("PAUSE");
    return 0;
}


#include <iostream>
#include <math.h>

using namespace std;

int main(int argc, char *argv[]){
    double a, b, c;
    cin >> a >> b >> c;
    double d = b*b-4.0*a*c;
    if(d < 0){
         cout << -1 << endl;
         return 0;
    }else if(d == 0){
          cout << 1 << endl;
          cout << sqrt(c/a) << endl;
    }else{
          d = sqrt(d);
          cout << 2 << endl;
          cout << (-b-d)/2.0/a << endl;
          cout << (-b+d)/2.0/a << endl;
    }
    d = sqrt(d);
    return 0;
}


#include <iostream>
#include <math.h>

using namespace std;

int main(int argc, char *argv[]){
    double a, b, c;
    cin >> a >> b >> c;
    double d = b*b-4.0*a*c;

    if(a == 0){
          cout << 1 << endl;
          cout << -c/b << endl;
          return;
    }

    if(d < 0){
         cout << -1 << endl;
         return 0;
    }else if(d == 0){
          cout << 1 << endl;
          cout << sqrt(c/a) << endl;
    }else{
          d = sqrt(d);
          cout << 2 << endl;
          cout << (-b-d)/2.0/a << endl;
          cout << (-b+d)/2.0/a << endl;
    }
    d = sqrt(d);
    return 0;
}


#include <iostream>
#include <math.h>

using namespace std;

int main(int argc, char *argv[]){
    double a, b, c;
    cin >> a >> b >> c;
    double d = b*b-4.0*a*c;
    if(d < 0){
         cout << -1 << endl;
         return 0;
    }else if(d == 0){
          cout << 1 << endl;
          cout << sqrt(c/a) << endl;
    }else{
          d = sqrt(d);
          cout << 2 << endl;
          cout << (-b+d)/2.0/a << endl;
          cout << (-b-d)/2.0/a << endl;
    }
    d = sqrt(d);
    return 0;
}


#include <iostream>
#include <math.h>

using namespace std;

int main(int argc, char *argv[]){
    double a, b, c;
    cin >> a >> b >> c;
    double d = b*b-4.0*a*c;

    if(a == 0){
          cout << 1 << endl;
          cout << -c/b << endl;
          return 0;
    }

    if(d < 0){
         cout << -1 << endl;
         return 0;
    }else if(d == 0){
          cout << 1 << endl;
          cout << sqrt(c/a) << endl;
    }else{
          d = sqrt(d);
          cout << 2 << endl;
          cout << (-b-d)/2.0/a << endl;
          cout << (-b+d)/2.0/a << endl;
    }
    d = sqrt(d);
    return 0;
}


#include <iostream>
#include <math.h>

using namespace std;

int main(int argc, char *argv[]){
    double a, b, c;
    cin >> a >> b >> c;
    double d = b*b-4.0*a*c;

    if(a == 0){
          cout << 1 << endl;
          cout << -c/b << endl;
    }

    if(d < 0){
         cout << -1 << endl;
         return 0;
    }else if(d == 0){
          cout << 1 << endl;
          cout << sqrt(c/a) << endl;
    }else{
          d = sqrt(d);
          cout << 2 << endl;
          cout << (-b-d)/2.0/a << endl;
          cout << (-b+d)/2.0/a << endl;
    }
    d = sqrt(d);
    return 0;
}


#include <iostream>
#include <math.h>

using namespace std;

int main(int argc, char *argv[]){
    double a, b, c;
    cin >> a >> b >> c;
    double d = b*b-4.0*a*c;

    if(a == b == c == 0){
         cout << -1 << endl;
         return 0;
    }

    if(a == 0){
          cout << 1 << endl;
          cout << -c/b << endl;
          return 0;
    }

    if(d < 0){
         cout << -1 << endl;
         return 0;
    }else if(d == 0){
          cout << 1 << endl;
          cout << sqrt(c/a) << endl;
    }else{
          d = sqrt(d);
          cout << 2 << endl;
          cout << (-b-d)/2.0/a << endl;
          cout << (-b+d)/2.0/a << endl;
    }
    d = sqrt(d);
    return 0;
}


//#include <conio.h>
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
	double a,b,c,x1,x2,d;
   cin>>a>>b>>c;
   d=(b*b)-(4*a*c);
   if(a==0 && b==0 && c==0)
   	cout<<-1;
   else if(d==0)
   {
   	x1=((-1)*b)/(2*a);
      cout<<1<<endl;
      cout<<x1;
   }
   else if(d>0)
   {
   	if(a==0)
   	{
      cout<<1<<endl;
   	cout<<(-c/b);
   	}
   	else
      {
      	x1=(((-1)*b)-sqrt(d))/(2*a);
      	x2=(((-1)*b)+sqrt(d))/(2*a);
      	cout<<2<<endl;
      	cout<<x1<<endl;
      	cout<<x2<<endl;
      }
   }
   else if(d<0)
   	cout<<0;

   //getch();
   return 0;
}


//#include <conio.h>
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
	double a,b,c,x1,x2,d;
   cin>>a>>b>>c;
   d=(b*b)-(4*a*c);
   if(a==0 && b==0 && c==0)
   	cout<<-1;
   else if(d==0)
   {
      if(a==0)
      	cout<<0;
      else
      {
   		x1=((-1)*b)/(2*a);
      	cout<<1<<endl;
      	cout<<x1;
      }
   }
   else if(d>0)
   {
   	if(a==0)
   	{
      cout<<1<<endl;
   	cout<<(-c/b);
   	}
   	else
      {
      	x1=(((-1)*b)-sqrt(d))/(2*a);
      	x2=(((-1)*b)+sqrt(d))/(2*a);
      	cout<<2<<endl;
      	cout<<x1<<endl;
      	cout<<x2<<endl;
      }
   }
   else if(d<0)
   	cout<<0;

   //getch();
   return 0;
}


//#include <conio.h>
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
	double a,b,c,x1,x2,d;
   cin>>a>>b>>c;
   d=(b*b)-(4*a*c);
   if(a==0)
   	cout<<(-1);
   else if(d==0)
   {
   	x1=((-1)*b)/(2*a);
      cout<<1<<endl;
      cout<<x1;
   }
   else if(d>0)
   {
   	x1=(((-1)*b)-sqrt(d))/(2*a);
      x2=(((-1)*b)+sqrt(d))/(2*a);
      cout<<2<<endl;
      cout<<x1<<endl;
      cout<<x2<<endl;
   }
   else if(d<0)
   	cout<<0;
   //getch();
   return 0;
}


//#include <conio.h>
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
	cout.setf(ios::fixed);
  cout.precision(10);
	double a,b,c,x1,x2,d;
   cin>>a>>b>>c;
   d=(b*b)-(4*a*c);
   if(a==0 && b==0 && c==0)
   	cout<<-1;
   else if(d==0)
   {
      if(a==0)
      	cout<<0;
      else
      {
   		x1=((-1)*b)/(2*a);
      	cout<<1<<endl;
      	cout<<x1;
      }
   }
   else if(d>0)
   {
   	if(a==0)
   	{
      cout<<1<<endl;
      x1=(-c)/b;
   	cout<<x1;
   	}
   	else
      {
      	x1=(((-1)*b)-sqrt(d))/(2*a);
      	x2=(((-1)*b)+sqrt(d))/(2*a);
      	cout<<2<<endl;
         if(x1<x2)
      	{
         	cout<<x1<<endl;
      		cout<<x2<<endl;
         }
         else
         {
         	cout<<x2<<endl;
      		cout<<x1<<endl;
         }
      }
   }
   else if(d<0)
   	cout<<0;

   //getch();
   return 0;
}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;

/**
 *
 * @author ramilagger
 */
public class Main {

    public static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    public static final PrintWriter pw = new PrintWriter(System.out);

    public void run() throws IOException {

        int n = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine());
        int[] a = new int[n];
        for (int i = 0; i < n; i++) {
            a[i] = Integer.parseInt(st.nextToken());
        }
        int max = 1;
        int top;
        for (int i = n - 1; i > -1; i--) {
            top = max;
            max = Math.max(a[i], max);
            a[i] = a[i] > top ? 0 : top - a[i] + 1;
        }
        for (int i = 0; i < n; i++) {
            pw.print(a[i] + " ");
        }
        pw.println();
        pw.close();

    }

    public static void main(String[] args) throws IOException {
        new Main().run();
    }
}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;

/**
 *
 * @author ramilagger
 */
public class Main {

    public static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    public static final PrintWriter pw = new PrintWriter(System.out);

    public void run() throws IOException {

        int n = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine());
        int[] a = new int[n];
        for (int i = 0; i < n; i++) {
            a[i] = Integer.parseInt(st.nextToken());
        }
        int max = 0;
        for (int i = n - 1; i > -1; i--) {
            max = Math.max(a[i], max);
            a[i] = a[i] >= max ? 0 : max - a[i] + 1;
        }
        for (int i = 0; i < n; i++) {
            pw.print(a[i] + " ");
        }
        pw.println();
        pw.close();

    }

    public static void main(String[] args) throws IOException {
        new Main().run();
    }
}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;

/**
 *
 * @author ramilagger
 */
public class Main {

    public static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    public static final PrintWriter pw = new PrintWriter(System.out);

    public void run() throws IOException {

        int n = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine());
        int[] a = new int[n];
        for (int i = 0; i < n; i++) {
            a[i] = Integer.parseInt(st.nextToken());
        }
        int max = 0;
        int top;
        for (int i = n - 1; i > -1; i--) {
            top = max;
            max = Math.max(a[i], max);
            a[i] = a[i] > top ? 0 : top - a[i] + 1;
        }
        for (int i = 0; i < n; i++) {
            pw.print(a[i] + " ");
        }
        pw.println();
        pw.close();

    }

    public static void main(String[] args) throws IOException {
        new Main().run();
    }
}


/*
 *In the name of Allah the Most Merciful.
 * Author
 * Md. Toufiqul Islam
 * Dept. Of CSE
 * Ahsanullah University Of Science And Technology
 */

//package CodeForces;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class R581B {

	public static void main(String[] arg){
		Scanner sc = new Scanner(System.in);

		int n = sc.nextInt();

		int a[] = new int[n];
		int b[] = new int[n];

		for(int i=0;i<n;i++){
			a[i] = sc.nextInt();
		}

		List<Integer> list = new ArrayList<>();
		List<Integer> out = new ArrayList<>();

		for(int i=0;i<n-1;i++){

			int in =0;
			for(int j=i+1;j<a.length;j++){
				list.add(a[j]);

			}

			Collections.sort(list);

           //  System.out.println(list);
             int temp = list.get(list.size()-1)+1;
             if(a[i]<list.get(list.size()-1)){
 			out.add((temp-a[i]));
             }
             else{
            	 out.add(0);
             }
             list.clear();

		}

           for(int i=0;i<out.size();i++){
        	   System.out.print(out.get(i)+" ");
           }
           System.out.println("0");

	}

}


/*
 *In the name of Allah the Most Merciful.
 * Author
 * Md. Toufiqul Islam
 * Dept. Of CSE
 * Ahsanullah University Of Science And Technology
 */

//package CodeForces;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class R581B {

	public static void main(String[] arg){
		Scanner sc = new Scanner(System.in);

		int n = sc.nextInt();
		int[] a = new int[n];
		int[] b = new int[n];
		for(int i=0;i<n;i++){
			a[i] = sc.nextInt();
		}

		int max = a[n-1];

		for(int i=n-2;i>=0;i--){
			if(a[i]<=max){
				b[i] = (max+1)-a[i];
			}
			else{
				max = a[i];
				b[i] =0;
			}
		}
		b[n-1] =0;
		for(int i=0;i<b.length;i++){
		  System.out.print(b[i]+" ");
		}
	}

}


/*
 *In the name of Allah the Most Merciful.
 * Author
 * Md. Toufiqul Islam
 * Dept. Of CSE
 * Ahsanullah University Of Science And Technology
 */

//package CodeForces;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class R581B {

	public static void main(String[] arg){
		Scanner sc = new Scanner(System.in);

		int n = sc.nextInt();

		Long a[] = new Long[n];

		for(int i=0;i<n;i++){
			a[i] = sc.nextLong();
		}

		List<Long> list = new ArrayList<>();
		List<Long> out = new ArrayList<>();

		for(int i=0;i<n-1;i++){

			int in =0;
			for(int j=(i+1);j<a.length;j++){
				list.add(a[j]);

			}

			Collections.sort(list);
			//System.out.println(list);

           //  System.out.println(list);
             int temp = (int) (list.get(list.size()-1)+1);
             if(a[i]<list.get(list.size()-1)){
 			out.add((long) (temp-a[i]));
             }
             else{
            	 out.add((long) 0);
             }
             list.clear();

		}

           for(int i=0;i<out.size();i++){
        	   System.out.print(out.get(i)+" ");
           }
           System.out.println("0");

	}

}


/*
 *In the name of Allah the Most Merciful.
 * Author
 * Md. Toufiqul Islam
 * Dept. Of CSE
 * Ahsanullah University Of Science And Technology
 */

//package CodeForces;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class R581B {

	public static void main(String[] arg){
		Scanner sc = new Scanner(System.in);

		int n = sc.nextInt();

		int a[] = new int[n];
		int b[] = new int[n];

		for(int i=0;i<n;i++){
			a[i] = sc.nextInt();
		}

		List<Integer> list = new ArrayList<>();
		List<Integer> out = new ArrayList<>();

		for(int i=0;i<n-1;i++){

			int in =0;
			for(int j=i+1;j<a.length;j++){
				list.add(a[j]);

			}

			Collections.sort(list);

           //  System.out.println(list);
             int temp = list.get(list.size()-1)+1;
 			out.add((temp-a[i]));

             list.clear();

		}

           for(int i=0;i<out.size();i++){
        	   System.out.print(out.get(i)+" ");
           }
           System.out.println("0");

	}

}


import java.util.*;

public final class TestClass {
    public static void main(String args[] ) throws Exception {
        Scanner in=new Scanner(System.in);
       int n=in.nextInt();
       long[] arr=new long[n];
       for(int i=0;i<n;i++){
           arr[i]=in.nextLong();
       }
       for(int i=0;i<n;i++){
          long pos=0;
           for(int j=i+1;j<n;j++){
               if(arr[j]>arr[i]){
                   pos=arr[j];
               }
           }
          // System.out.println(pos);
           if(pos==0){
               System.out.print(0+" ");
           }else{
               System.out.print(((pos+1)-arr[i])+" ");
           }
       }
    }
}


import java.util.*;

public final class TestClass {
    public static void main(String args[] ) throws Exception {
        Scanner in=new Scanner(System.in);
       int n=in.nextInt();
       long[] arr=new long[n];
      // long[] arr1=new long[n];
       for(int i=0;i<n;i++){
           arr[i]=in.nextLong();
        //   arr1[i]=arr[i];
       }
       long max=0;
       long[] arr1=new long[n];
       for(int i=0;i<n;i++){
           arr1[i]=0;
       }
      for(int i=n-1;i>=0;i--){
          if(arr[i]>max){
              max=arr[i];
              arr1[i]=1;
          }

      }
      long pos=0;
      int k=0;
      long[] arr2=new long[n];
       for(int i=n-1;i>=0;i--){
         if(arr1[i]==1){
             arr2[k]=0;
             pos=arr[i];
         }else{
             arr2[k]=pos+1-arr[i];
         }
          k++;
      }
     // System.out.println(Arrays.toString(arr2));
      for(int i=n-1;i>=0;i--){
          System.out.print(arr2[i]+" ");
      }
    }
}


import java.util.*;

public final class TestClass {
    public static void main(String args[] ) throws Exception {
        Scanner in=new Scanner(System.in);
       int n=in.nextInt();
       long[] arr=new long[n];
       for(int i=0;i<n;i++){
           arr[i]=in.nextLong();
       }
       for(int i=0;i<n;i++){
          long pos=0;
          long k=arr[i];
           for(int j=i+1;j<n;j++){
               if(arr[j]>k){
                   pos=arr[j];
                   k=arr[j];
               }
           }
          // System.out.println(pos);
           if(pos==0){
               System.out.print(0+" ");
           }else{
               System.out.print(((pos+1)-arr[i])+" ");
           }
       }
    }
}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Stack;
import java.util.StringTokenizer;

public class LuxuriousHouses {

	public static void main(String[] args) throws IOException {
		BufferedReader bf= new BufferedReader(new InputStreamReader(System.in));
		int l=Integer.parseInt(bf.readLine());
		Long [] a= new Long [l];
		StringTokenizer st= new StringTokenizer(bf.readLine());
		for(int i=0; i<l;i++)
			a[i]= Long.parseLong(st.nextToken());
		StringBuilder sb= new StringBuilder("");
		Stack<Long> r= new Stack<Long>();

		Long max=a[l-1];
		r.push(0L);
		for(int i=l-2; i>=0;i--)
		{
			if(a[i]<=max)
				r.push((max-a[i]+1));
			else
			{
				max=a[i];
				r.push(0L);

			}
		}
		for(int i=0;i<l;i++)
		{
			sb.append(r.pop()+" ");
		}
		sb.deleteCharAt(sb.length()-1);

		System.out.println(sb);

	}

}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Stack;
import java.util.StringTokenizer;

public class LuxuriousHouses {

	public static void main(String[] args) throws IOException {
		BufferedReader bf= new BufferedReader(new InputStreamReader(System.in));
		int l=Integer.parseInt(bf.readLine());
		Long [] a= new Long [l];
		StringTokenizer st= new StringTokenizer(bf.readLine());
		for(int i=0; i<l;i++)
			a[i]= Long.parseLong(st.nextToken());
		StringBuilder sb= new StringBuilder("");
		Stack<Long> r= new Stack<Long>();

		Long max=a[l-1];
		r.push(0L);
		for(int i=l-2; i>=0;i--)
		{
			if(a[i]<=max)
				r.push((max-a[i]+1));
			else
			{
				max=a[i];
				r.push(0L);

			}
		}
		for(int i=0;i<l;i++)
		{
			sb.append(r.pop()+" ");
		}
		sb.deleteCharAt(l*2-1);
		System.out.println(sb);

	}

}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Stack;
import java.util.StringTokenizer;

public class LuxuriousHouses {

	public static void main(String[] args) throws IOException {
		BufferedReader bf= new BufferedReader(new InputStreamReader(System.in));
		int l=Integer.parseInt(bf.readLine());
		Long [] a= new Long [l];
		StringTokenizer st= new StringTokenizer(bf.readLine());
		for(int i=0; i<l;i++)
			a[i]= Long.parseLong(st.nextToken());
		StringBuilder sb= new StringBuilder("");
		Stack<Long> r= new Stack<Long>();
		Long max;
		if(a[l-1]!=0)
		{ max=a[l-1];
		 r.push(0L);
		}
		else{
			max=1L;
			r.push(1L);
		}
		for(int i=l-2; i>=0;i--)
		{
			if(a[i]<max)
				r.push((max-a[i]+1));
			else{
				max=a[i];
				r.push(0L);

			}
		}
		for(int i=0;i<l;i++)
		{
			sb.append(r.pop()+" ");
		}
		sb.deleteCharAt(l*2-1);
		System.out.println(sb);

	}

}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Stack;
import java.util.StringTokenizer;

public class LuxuriousHouses {

	public static void main(String[] args) throws IOException {
		BufferedReader bf= new BufferedReader(new InputStreamReader(System.in));
		int l=Integer.parseInt(bf.readLine());
		int [] a= new int [l];
		StringTokenizer st= new StringTokenizer(bf.readLine());
		for(int i=0; i<l;i++)
			a[i]= Integer.parseInt(st.nextToken());
		StringBuilder sb= new StringBuilder("");
		Stack<Integer> r= new Stack<Integer>();
		int max=a[l-1];
		r.push(0);
		for(int i=l-2; i>=0;i--)
		{
			if(a[i]<max)
				r.push((max-a[i]+1));
			else{
				max=a[i];
				r.push(0);

			}
		}
		for(int i=0;i<l;i++)
		{
			sb.append(r.pop()+" ");
		}
		sb.deleteCharAt(l*2-1);
		System.out.println(sb);

	}

}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Stack;
import java.util.StringTokenizer;

public class LuxuriousHouses {

	public static void main(String[] args) throws IOException {
		BufferedReader bf= new BufferedReader(new InputStreamReader(System.in));
		int l=Integer.parseInt(bf.readLine());
		Long [] a= new Long [l];
		StringTokenizer st= new StringTokenizer(bf.readLine());
		for(int i=0; i<l;i++)
			a[i]= Long.parseLong(st.nextToken());
		StringBuilder sb= new StringBuilder("");
		Stack<Long> r= new Stack<Long>();
		Long max=a[l-1];
		r.push(0L);
		for(int i=l-2; i>=0;i--)
		{
			if(a[i]<max)
				r.push((max-a[i]+1));
			else{
				max=a[i];
				r.push(0L);

			}
		}
		for(int i=0;i<l;i++)
		{
			sb.append(r.pop()+" ");
		}
		sb.deleteCharAt(l*2-1);
		System.out.println(sb);

	}

}


import java.util.*;
import java.io.*;

public class Main {

    public static void main(String[] args) {

        FastReader in=new FastReader();

        int n=in.nextInt();

        long [] x=new long[n];

        for(int i=0;i<n;i++){
            x[i]=in.nextInt();
        }

        long max=x[n-1];

        StringBuilder sb=new StringBuilder();

        for(int i=n-1;i>=0;i--){
            if(max-x[i] > 0){
                x[i]=max-x[i]+1;
            }
            else {
                 if(max-x[i] < 0){
                     max=x[i];
                     x[i]=0;

                 }

                 else
                     x[i]=0;
            }

        }

        for(int i=0;i<n;i++){
            if(i == 0){
                sb.append(x[i]);
            }
            else
                sb.append(" "+x[i]);
        }

        System.out.println(sb);
    }

}

class FastReader {

    BufferedReader br;
    StringTokenizer st;

    public FastReader() {
        br = new BufferedReader(new InputStreamReader(System.in));
    }

    String next() {
        while (st == null || !st.hasMoreElements()) {
            try {
                st = new StringTokenizer(br.readLine());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return st.nextToken();
    }

    int nextInt() {
        return Integer.parseInt(next());
    }

    long nextLong() {
        return Long.parseLong(next());
    }

    double nextDouble() {
        return Double.parseDouble(next());
    }

    String nextLine() {
        String str = "";
        try {
            str = br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
    }
}


import java.util.*;
import java.io.*;

public class Main {

    public static void main(String[] args) {

        FastReader in=new FastReader();

        int n=in.nextInt();

        long [] x=new long[n];

        for(int i=0;i<n;i++){
            x[i]=in.nextInt();

        }

        long max=x[n-1];
        x[n-1]=0;

        StringBuilder sb=new StringBuilder();

        for(int i=n-2;i>=0;i--){
            if(max-x[i] >= 0){
                x[i]=max-x[i]+1;
            }
            else {
                 if(max-x[i] < 0){
                     max=x[i];
                 }

                 else
                     x[i]=0;
            }

        }

        for(int i=0;i<n;i++){
            if(i == 0){
                sb.append(x[i]);
            }
            else
                sb.append(" "+x[i]);
        }

        System.out.println(sb);
    }

}

class FastReader {

    BufferedReader br;
    StringTokenizer st;

    public FastReader() {
        br = new BufferedReader(new InputStreamReader(System.in));
    }

    String next() {
        while (st == null || !st.hasMoreElements()) {
            try {
                st = new StringTokenizer(br.readLine());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return st.nextToken();
    }

    int nextInt() {
        return Integer.parseInt(next());
    }

    long nextLong() {
        return Long.parseLong(next());
    }

    double nextDouble() {
        return Double.parseDouble(next());
    }

    String nextLine() {
        String str = "";
        try {
            str = br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
    }
}


import java.util.*;
import java.io.*;

public class Main {

    public static void main(String[] args) {

        FastReader in=new FastReader();

        int n=in.nextInt();

        int [] x=new int[n];

        for(int i=0;i<n;i++){
            x[i]=in.nextInt();
        }

        int max=x[n-1];

        StringBuilder sb=new StringBuilder();

        for(int i=n-1;i>=0;i--){
            if(max-x[i] > 0){
                x[i]=max-x[i]+1;
            }
            else {
                 if(max-x[i] < 0){
                     max=x[i];
                     x[i]=0;

                 }

                 else
                     x[i]=0;
            }

        }

        for(int i=0;i<n;i++){
            if(i == 0){
                sb.append(x[i]);
            }
            else
                sb.append(" "+x[i]);
        }

        System.out.println(sb);
    }

}

class FastReader {

    BufferedReader br;
    StringTokenizer st;

    public FastReader() {
        br = new BufferedReader(new InputStreamReader(System.in));
    }

    String next() {
        while (st == null || !st.hasMoreElements()) {
            try {
                st = new StringTokenizer(br.readLine());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return st.nextToken();
    }

    int nextInt() {
        return Integer.parseInt(next());
    }

    long nextLong() {
        return Long.parseLong(next());
    }

    double nextDouble() {
        return Double.parseDouble(next());
    }

    String nextLine() {
        String str = "";
        try {
            str = br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
    }
}


import java.util.*;
import java.io.*;

public class Main {

    public static void main(String[] args) {

        FastReader in=new FastReader();

        int n=in.nextInt();

        long [] x=new long[n];

        for(int i=0;i<n;i++){
            x[i]=in.nextInt();

        }

        long max=x[n-1];
        x[n-1]=0;

        StringBuilder sb=new StringBuilder();

        for(int i=n-2;i>=0;i--){
            if(max-x[i] >= 0){
                x[i]=max-x[i]+1;
            }
            else {
                 if(max-x[i] < 0){
                     max=x[i];
                     x[i]=0;
                 }

                 else
                     x[i]=0;
            }

        }

        for(int i=0;i<n;i++){
            if(i == 0){
                sb.append(x[i]);
            }
            else
                sb.append(" "+x[i]);
        }

        System.out.println(sb);
    }

}

class FastReader {

    BufferedReader br;
    StringTokenizer st;

    public FastReader() {
        br = new BufferedReader(new InputStreamReader(System.in));
    }

    String next() {
        while (st == null || !st.hasMoreElements()) {
            try {
                st = new StringTokenizer(br.readLine());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return st.nextToken();
    }

    int nextInt() {
        return Integer.parseInt(next());
    }

    long nextLong() {
        return Long.parseLong(next());
    }

    double nextDouble() {
        return Double.parseDouble(next());
    }

    String nextLine() {
        String str = "";
        try {
            str = br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
    }
}


import java.util.*;
import java.io.*;

public class Main {

    public static void main(String[] args) {

        FastReader in=new FastReader();

        int n=in.nextInt();

        int[] x=new int[n];

        int l=100000000;

        int[]fr=new int[l];
        TreeSet <Integer> st=new TreeSet();

        for(int i=1;i<=n;i++){
            int a=in.nextInt();
            x[i-1]=a;
            fr[a]++;
            st.add(a);
        }

        StringBuilder sb=new StringBuilder();

        int max=st.last();

        for(int i=0;i<n;i++){
            int r=x[i];

            fr[r]--;

            if(max-r !=0 ){
                sb.append(max-r+1+" ");
            }

            else {
                sb.append("0 ");
                if(fr[r] == 0){
                    st.remove(r);

                    if(!st.isEmpty())
                    max=st.last();
                }
            }
        }

        sb.trimToSize();

        System.out.println(sb);
    }
}

class FastReader {

    BufferedReader br;
    StringTokenizer st;

    public FastReader() {
        br = new BufferedReader(new InputStreamReader(System.in));
    }

    String next() {
        while (st == null || !st.hasMoreElements()) {
            try {
                st = new StringTokenizer(br.readLine());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return st.nextToken();
    }

    int nextInt() {
        return Integer.parseInt(next());
    }

    long nextLong() {
        return Long.parseLong(next());
    }

    double nextDouble() {
        return Double.parseDouble(next());
    }

    String nextLine() {
        String str = "";
        try {
            str = br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
    }
}


import java.util.*;
import java.io.*;

public class Main {

    public static void main(String[] args) {

        FastReader in=new FastReader();

        int n=in.nextInt();

        int[] x=new int[n];

        int[]fr=new int[n+1];

        TreeSet <Integer> st=new TreeSet();

        for(int i=1;i<=n;i++){
            int a=in.nextInt();
            x[i-1]=a;
            fr[a]++;
            st.add(a);
        }

        StringBuilder sb=new StringBuilder();

        int max=st.last();

        for(int i=0;i<n;i++){
            int r=x[i];

            fr[r]--;

            if(max-r !=0 ){
                sb.append(max-r+1+" ");
            }

            else {
                sb.append("0 ");
                if(fr[r] == 0){
                    st.remove(r);
                    max=st.last();
                }
            }
        }

        sb.trimToSize();

        System.out.println(sb);
    }
}

class FastReader {

    BufferedReader br;
    StringTokenizer st;

    public FastReader() {
        br = new BufferedReader(new InputStreamReader(System.in));
    }

    String next() {
        while (st == null || !st.hasMoreElements()) {
            try {
                st = new StringTokenizer(br.readLine());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return st.nextToken();
    }

    int nextInt() {
        return Integer.parseInt(next());
    }

    long nextLong() {
        return Long.parseLong(next());
    }

    double nextDouble() {
        return Double.parseDouble(next());
    }

    String nextLine() {
        String str = "";
        try {
            str = br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
    }
}


import java.util.*;
import java.io.*;
public class Luxurious2  {
    // O n time complexity

    public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader( System.in));
int n=Integer.parseInt(br.readLine());
String[] parts= br.readLine().split(" ");
int[] a= new int[n];
int[] max= new int[n];
for(int i=0;i<n;i++){
    a[i]=Integer.parseInt(parts[i]);
}
int tunaMax=0;
for(int i=n-1;i>=n;i--){
    max[i]=Math.max(tunaMax-a[i]+1,0);
    tunaMax=Math.max(a[i],tunaMax);
}
for(int i=0;i<n;i++)
System.out.println(max[i]);
System.out.println();
br.close();
}//end of main function
}//end of Main class


import java.util.*;
import java.io.*;
public class Luxurious2  {

// O(n) time complexity
    public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader( System.in));
int n=Integer.parseInt(br.readLine());
String[] parts= br.readLine().split(" ");
int[] a= new int[n];
int[] max= new int[n];
for(int i=0;i<n;i++){
    a[i]=Integer.parseInt(parts[i]);
}
int tunaMax=0;
for(int i=n-1;i>=0;i--){
    max[i]=Math.max(tunaMax-a[i]+1,0);
    tunaMax=Math.max(a[i],tunaMax);
}
for(int i=0;i<n;i++)
System.out.print(max[i]+" ");
System.out.println();
br.close();
}//end of main function
}//end of Main class


import java.util.*;
import java.io.*;
public class Luxurious  {

    public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader( System.in));
int n=Integer.parseInt(br.readLine());
String[] parts= br.readLine().split(" ");
int[] a= new int[n];
int[] ans= new int[n];
for(int i=0;i<n;i++){
    a[i]=Integer.parseInt(parts[i]);
    ans[i]=Integer.parseInt(parts[i]);

}
for(int i=0;i<n;i++)
    for(int j=i;j<n;j++){ //System.out.println(i+" "+ans[i]+" "+ a[j]);
if((ans[i])<=(a[j]+1)){
    ans[i]=a[j]+1;
}
    }
int answer;
for(int i=0;i<n;i++){
answer=(ans[i]-a[i]);
    if(answer==1)
        System.out.print("0 ");
    else
    System.out.print(answer+" ");

}
System.out.println();
br.close();
}//end of main function
}//end of Main class


import java.util.Scanner;

public class LuxuriousHouses {
	static int K;
	static int[] intarray;
	static Scanner scan;
	static int tempmax, tempmaxpos;

	public static void main(String[] args) {
		scan = new Scanner(System.in);
		K = scan.nextInt();
		intarray = new int[K];
		for (int i = 0; i < K; i++)
			intarray[i] = scan.nextInt();
		getMax();
		System.out.print(RecursiveMethod(0, ""));
	}

	private static String RecursiveMethod(int pos, String result) {
		// TODO Auto-generated method stub
		// System.out.println("POS IS " + pos + " And maximum is " + tempmax + "
		// and temp max pos is " + tempmaxpos);
		if (pos == K) {
			return result;
		}
		if (pos == tempmaxpos) {
			getMax();
			return RecursiveMethod(pos + 1, result + "0 ");
		}
		return RecursiveMethod(pos + 1, result + ((tempmax + 1) - intarray[pos]) + " ");
	}

	public static void getMax() {
		tempmax = 0;
		for (int i = tempmaxpos + 1; i < K; i++) {
			if (intarray[i] >= tempmax) {
				tempmax = intarray[i];
				tempmaxpos = i;
			}
		}
	}
}


import java.util.Scanner;

public class LuxuriousHouses {
	static int K;
	static int[] intarray;
	static Scanner scan;
	static int tempmax, tempmaxpos;

	public static void main(String[] args) {
		scan = new Scanner(System.in);
		K = scan.nextInt();
		intarray = new int[K];
		for (int i = 0; i < K; i++) {
			intarray[i] = scan.nextInt();
			if (intarray[i] >= tempmax) {
				tempmax = intarray[i];
				tempmax = i;
			}

		}
		getMax();
		System.out.print(RecursiveMethod(0, ""));

	}

	private static String RecursiveMethod(int pos, String result) {
		// TODO Auto-generated method stub
		if (pos == K) {
			return result;
		}
		if (pos == tempmaxpos) {
			getMax();
			return RecursiveMethod(pos + 1, result + "0 ");
		}
		return RecursiveMethod(pos + 1, result + ((tempmax + 1) - intarray[pos]) + " ");
	}

	public static void getMax() {
		tempmax = 0;
		for (int i = tempmaxpos + 1; i < K; i++) {
			if (intarray[i] >= tempmax) {
				tempmax = intarray[i];
				tempmaxpos = i;
			}
		}
	}
}


import java.util.Scanner;

public class LuxuriousHouses {
	static int K;
	static int[] intarray;
	static Scanner scan;
	static int[] results;
	static int max;

	public static void main(String[] args) {
		scan = new Scanner(System.in);
		K = scan.nextInt();
		intarray = new int[K];
		results = new int[K];
		results[K - 1] = 0;
		for (int i = 0; i < K; i++)
			intarray[i] = scan.nextInt();
		max = intarray[K - 1];

		for (int i = K - 2; i >= 0; i--) {
			if (intarray[i] > max) {
				max = intarray[i];
				results[i] = 0;
				continue;
			}
			results[i] = max + 1 - intarray[i];
		}
		for (int numb : results)
			System.out.print(numb + " ");

	}

}


import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.InputMismatchException;

public class B581 {

	static InputStream is;

	public static void main(String[] args) {
		is = System.in;

		solve();
	}

	static void solve() {
		int n = ni();
		int[] h = new int[n];

		for (int i = 0; i < n; i++) {
			h[i] = ni();
		}

		int[] r = new int[n];
		int max = h[n - 1];
		r[n - 1] = 0;
		for (int i = n - 2; i >= 0; i--) {
			if (h[i] > max) {
				max = h[i];
			}
			if (max - h[i] == 0) {
				r[i] = 0;
			} else {
				r[i] = max - h[i] + 1;
			}
		}

		for (int i = 0; i < n; i++) {
			System.out.print(r[i] + " ");
		}
	}

	/*****************************************************************
	 ******************** BASIC READER *******************************
	 *****************************************************************/
	static byte[] inbuf = new byte[4096];
	static int lenbuf = 0, ptrbuf = 0;

	static int readByte() {
		if (lenbuf == -1)
			throw new InputMismatchException();
		if (ptrbuf >= lenbuf) {
			ptrbuf = 0;
			try {
				lenbuf = is.read(inbuf);
			} catch (IOException e) {
				throw new InputMismatchException();
			}
			if (lenbuf <= 0)
				return -1;
		}
		return inbuf[ptrbuf++];
	}

	static boolean isSpaceChar(int c) {
		return !(c >= 33 && c <= 126);
	}

	static int skip() {
		int b;
		while ((b = readByte()) != -1 && isSpaceChar(b))
			;
		return b;
	}

	static double nd() {
		return Double.parseDouble(ns());
	}

	static char nc() {
		return (char) skip();
	}

	static String ns() {
		int b = skip();
		StringBuilder sb = new StringBuilder();
		while (!(isSpaceChar(b))) {
			sb.appendCodePoint(b);
			b = readByte();
		}
		return sb.toString();
	}

	static char[] ns(int n) {
		char[] buf = new char[n];
		int b = skip(), p = 0;
		while (p < n && !(isSpaceChar(b))) {
			buf[p++] = (char) b;
			b = readByte();
		}
		return n == p ? buf : Arrays.copyOf(buf, p);
	}

	static int ni() {
		int num = 0, b;
		boolean minus = false;
		while ((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-'))
			;
		if (b == '-') {
			minus = true;
			b = readByte();
		}

		while (true) {
			if (b >= '0' && b <= '9') {
				num = num * 10 + (b - '0');
			} else {
				return minus ? -num : num;
			}
			b = readByte();
		}
	}

	static long nl() {
		long num = 0;
		int b;
		boolean minus = false;
		while ((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-'))
			;
		if (b == '-') {
			minus = true;
			b = readByte();
		}

		while (true) {
			if (b >= '0' && b <= '9') {
				num = num * 10 + (b - '0');
			} else {
				return minus ? -num : num;
			}
			b = readByte();
		}
	}

}


import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.InputMismatchException;

public class B581 {

	static InputStream is;

	public static void main(String[] args) {
		is = System.in;

		solve();
	}

	static void solve() {
		int n = ni();
		int[] h = new int[n];

		for (int i = 0; i < n; i++) {
			h[i] = ni();
		}

		int[] r = new int[n];
		int max = h[n - 1];
		r[n - 1] = 0;
		for (int i = n - 2; i >= 0; i--) {
			if (h[i] > max) {
				max = h[i];
			}
			if (max - h[i] == 0) {
				r[i] = 1;
			} else {
				r[i] = max - h[i] + 1;
			}
		}

		for (int i = 0; i < n; i++) {
			System.out.print(r[i] + " ");
		}
	}

	/*****************************************************************
	 ******************** BASIC READER *******************************
	 *****************************************************************/
	static byte[] inbuf = new byte[4096];
	static int lenbuf = 0, ptrbuf = 0;

	static int readByte() {
		if (lenbuf == -1)
			throw new InputMismatchException();
		if (ptrbuf >= lenbuf) {
			ptrbuf = 0;
			try {
				lenbuf = is.read(inbuf);
			} catch (IOException e) {
				throw new InputMismatchException();
			}
			if (lenbuf <= 0)
				return -1;
		}
		return inbuf[ptrbuf++];
	}

	static boolean isSpaceChar(int c) {
		return !(c >= 33 && c <= 126);
	}

	static int skip() {
		int b;
		while ((b = readByte()) != -1 && isSpaceChar(b))
			;
		return b;
	}

	static double nd() {
		return Double.parseDouble(ns());
	}

	static char nc() {
		return (char) skip();
	}

	static String ns() {
		int b = skip();
		StringBuilder sb = new StringBuilder();
		while (!(isSpaceChar(b))) {
			sb.appendCodePoint(b);
			b = readByte();
		}
		return sb.toString();
	}

	static char[] ns(int n) {
		char[] buf = new char[n];
		int b = skip(), p = 0;
		while (p < n && !(isSpaceChar(b))) {
			buf[p++] = (char) b;
			b = readByte();
		}
		return n == p ? buf : Arrays.copyOf(buf, p);
	}

	static int ni() {
		int num = 0, b;
		boolean minus = false;
		while ((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-'))
			;
		if (b == '-') {
			minus = true;
			b = readByte();
		}

		while (true) {
			if (b >= '0' && b <= '9') {
				num = num * 10 + (b - '0');
			} else {
				return minus ? -num : num;
			}
			b = readByte();
		}
	}

	static long nl() {
		long num = 0;
		int b;
		boolean minus = false;
		while ((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-'))
			;
		if (b == '-') {
			minus = true;
			b = readByte();
		}

		while (true) {
			if (b >= '0' && b <= '9') {
				num = num * 10 + (b - '0');
			} else {
				return minus ? -num : num;
			}
			b = readByte();
		}
	}

}


import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.InputMismatchException;

public class B581 {

	static InputStream is;

	public static void main(String[] args) {
		is = System.in;

		solve();
	}

	static void solve() {
		int n = ni();
		int[] h = new int[n];

		for (int i = 0; i < n; i++) {
			h[i] = ni();
		}

		int[] r = new int[n];
		int max = h[n - 1];
		r[n - 1] = 0;
		for (int i = n - 2; i >= 0; i--) {
			if (h[i] > max) {
				max = h[i];
			}
			if (max - h[i] == 0 || max == 1000_000_000) {
				r[i] = 0;
			} else {
				r[i] = max - h[i] + 1;
			}
		}

		for (int i = 0; i < n; i++) {
			System.out.print(r[i] + " ");
		}
	}

	/*****************************************************************
	 ******************** BASIC READER *******************************
	 *****************************************************************/
	static byte[] inbuf = new byte[4096];
	static int lenbuf = 0, ptrbuf = 0;

	static int readByte() {
		if (lenbuf == -1)
			throw new InputMismatchException();
		if (ptrbuf >= lenbuf) {
			ptrbuf = 0;
			try {
				lenbuf = is.read(inbuf);
			} catch (IOException e) {
				throw new InputMismatchException();
			}
			if (lenbuf <= 0)
				return -1;
		}
		return inbuf[ptrbuf++];
	}

	static boolean isSpaceChar(int c) {
		return !(c >= 33 && c <= 126);
	}

	static int skip() {
		int b;
		while ((b = readByte()) != -1 && isSpaceChar(b))
			;
		return b;
	}

	static double nd() {
		return Double.parseDouble(ns());
	}

	static char nc() {
		return (char) skip();
	}

	static String ns() {
		int b = skip();
		StringBuilder sb = new StringBuilder();
		while (!(isSpaceChar(b))) {
			sb.appendCodePoint(b);
			b = readByte();
		}
		return sb.toString();
	}

	static char[] ns(int n) {
		char[] buf = new char[n];
		int b = skip(), p = 0;
		while (p < n && !(isSpaceChar(b))) {
			buf[p++] = (char) b;
			b = readByte();
		}
		return n == p ? buf : Arrays.copyOf(buf, p);
	}

	static int ni() {
		int num = 0, b;
		boolean minus = false;
		while ((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-'))
			;
		if (b == '-') {
			minus = true;
			b = readByte();
		}

		while (true) {
			if (b >= '0' && b <= '9') {
				num = num * 10 + (b - '0');
			} else {
				return minus ? -num : num;
			}
			b = readByte();
		}
	}

	static long nl() {
		long num = 0;
		int b;
		boolean minus = false;
		while ((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-'))
			;
		if (b == '-') {
			minus = true;
			b = readByte();
		}

		while (true) {
			if (b >= '0' && b <= '9') {
				num = num * 10 + (b - '0');
			} else {
				return minus ? -num : num;
			}
			b = readByte();
		}
	}

}


import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.InputMismatchException;

public class B581 {

	static InputStream is;

	public static void main(String[] args) {
		is = System.in;

		solve();
	}

	static void solve() {
		int n = ni();
		int[] h = new int[n];

		for (int i = 0; i < n; i++) {
			h[i] = ni();
		}

		int[] r = new int[n];
		int max = -1;
		for (int i = n - 1; i >= 0; i--) {
			r[i] = Math.max(0, max - h[i] + 1);
			max = Math.max(max, h[i]);
		}

		for (int i = 0; i < n; i++) {
			System.out.print(r[i] + " ");
		}
	}

	/*****************************************************************
	 ******************** BASIC READER *******************************
	 *****************************************************************/
	static byte[] inbuf = new byte[4096];
	static int lenbuf = 0, ptrbuf = 0;

	static int readByte() {
		if (lenbuf == -1)
			throw new InputMismatchException();
		if (ptrbuf >= lenbuf) {
			ptrbuf = 0;
			try {
				lenbuf = is.read(inbuf);
			} catch (IOException e) {
				throw new InputMismatchException();
			}
			if (lenbuf <= 0)
				return -1;
		}
		return inbuf[ptrbuf++];
	}

	static boolean isSpaceChar(int c) {
		return !(c >= 33 && c <= 126);
	}

	static int skip() {
		int b;
		while ((b = readByte()) != -1 && isSpaceChar(b))
			;
		return b;
	}

	static double nd() {
		return Double.parseDouble(ns());
	}

	static char nc() {
		return (char) skip();
	}

	static String ns() {
		int b = skip();
		StringBuilder sb = new StringBuilder();
		while (!(isSpaceChar(b))) {
			sb.appendCodePoint(b);
			b = readByte();
		}
		return sb.toString();
	}

	static char[] ns(int n) {
		char[] buf = new char[n];
		int b = skip(), p = 0;
		while (p < n && !(isSpaceChar(b))) {
			buf[p++] = (char) b;
			b = readByte();
		}
		return n == p ? buf : Arrays.copyOf(buf, p);
	}

	static int ni() {
		int num = 0, b;
		boolean minus = false;
		while ((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-'))
			;
		if (b == '-') {
			minus = true;
			b = readByte();
		}

		while (true) {
			if (b >= '0' && b <= '9') {
				num = num * 10 + (b - '0');
			} else {
				return minus ? -num : num;
			}
			b = readByte();
		}
	}

	static long nl() {
		long num = 0;
		int b;
		boolean minus = false;
		while ((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-'))
			;
		if (b == '-') {
			minus = true;
			b = readByte();
		}

		while (true) {
			if (b >= '0' && b <= '9') {
				num = num * 10 + (b - '0');
			} else {
				return minus ? -num : num;
			}
			b = readByte();
		}
	}

}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class LuxuriousHouses {

	public static void main(String[] args) throws IOException{
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();

		int n = Integer.parseInt(in.readLine());

		StringTokenizer st = new StringTokenizer(in.readLine());

		int[] buildings = new int[n];
		for (int i = 0; i < n; i++) {
			buildings[i] = Integer.parseInt(st.nextToken());
		}

		int max = 0;

		for (int i = n - 1; i >= 0; i--) {
			int res = Math.max(max - buildings[i] + 1, 0);

			if(buildings[i] > max)
				max = buildings[i];

			buildings[i] = res;
		}

		for (int i = 0; i < n; i++) {
			sb.append(buildings[i] + " ");
		}

		System.out.println(sb);
	}
}