#include <queue>
#include <set>
#include <vector>
#include <iostream>
#include <cmath>
using namespace std;
int max=0;
int point[6];
priority_queue<int> dist2;
multiset<int> dist;
bool f(int n){
int tempDist;
if(n==6){ //彻底比较是否存在
multiset<int> tempSet=dist;
for( int i=0 ; i<6 ; i++ ){
for( int j=0 ; j<6 ; j++ ){
if(i!=j){
tempDist=abs(point[i]-point[j]);
if( tempSet.find( tempDist )!=tempSet.end() ){
// cout<<tempDist<<" ";
tempSet.erase(tempSet.find(tempDist));
}else{
//cout<<"aaaa"<<endl;
return 0; //不符合
}
}
}
}
cout<<endl;
for( i=0 ; i<6 ; i++ ){ //查找成功,打印结果
cout<<point[i]<<' ';
}
cout<<"bbbbbbb"<<endl;
return 1;
}
int temp;
temp=point[n]=dist2.top();
dist2.pop();
if(f(n+1)){
return 1;
}else{
point[n]=max-temp;
return f(n+1);
}
}
int main(){
int input;
for(int i=0;i<15;i++){
cin>>input;
dist.insert(input);
dist2.push(input);
}
point[0]=0;
max=point[1]=dist2.top();
dist2.pop();
point[2]=dist2.top();
dist2.pop();
// cout<<point[1]<<endl;
// cout<<point[2]<<endl;
f(3);
return 0;
}