#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,ans;
int s[125000],a[505],ansA[505];
bool z[505][505];
int main()
{
    cin>>n;
    m=n*(n-1)/2;
    for (int i=0; i<m; i++)
        cin>>s[i];


    bool found=false;
    for (int i=1; i<=s[0]/2; i++)
    {
//        cout<<i<<'\n';
        memset(z,0,sizeof(z));
        a[0]=i;
        a[1]=s[0]-i;
        a[2]=s[1]-i;
        z[0][1]=z[0][2]=true;
        int br=3;
        for (int j=2; j<m; j++)
        {
            bool flag=true;
            for (int k=0; k<br; k++)
            {
                if (!flag)
                    break;
                for (int l=k+1; l<br; l++)
                {
                    if (a[k]+a[l]>s[j])
                        break;
                    if (a[k]+a[l]<s[j])
                        continue;
                    if (z[k][l])
                        continue;
//                    cout<<j<<' '<<k<<' '<<l<<'\n';
                    z[k][l]=true;
//                    if (i==5)
//                    {
//                        for (int i1=0; i1<n; i1++)
//                        {
//                            for (int j1=0; j1<n; j1++)
//                                cout<<z[i1][j1]<<' ';
//                            cout<<'\n';
//                        }
//                        cout<<"\n\n";
//                    }
                    flag=false;
                    break;
                }
            }
            if (flag)
            {
//                for (int j=0; j<n; j++)
//                {
//                    for (int k=0; k<n; k++)
//                        cout<<z[j][k]<<' ';
//                    cout<<'\n';
//                }
                a[br]=s[j]-a[0];
                z[0][br]=true;
                br++;
//                cout<<"br="<<br<<'\n';
                if (br>n || a[br-1]<a[br-2])
                {
                    br=-1;
                    break;
                }

            }
        }
//        cout<<i<<' '<<br<<'\n';
        if (br!=n)
            continue;
        if (ans==0)
            for (int j=0; j<n; j++)
                ansA[j]=a[j];
        ans++;
//        for (int j=0; j<n; j++)
//            cout<<a[j]<<' ';
//        cout<<'\n';
    }
    cout<<ans<<'\n';
    for (int i=0; i<n-1; i++)
        cout<<ansA[i]<<' ';
    cout<<ansA[n-1]<<'\n';
    return 0;
}
