#include using namespace std; struct Heap{ vector A; int size; int Parent(int i){ return (i-1)/2; } int Left(int i){ return 2*i+1; } int Right(int i){ return 2*i+2; } void MaxHeapify(int i){ int l=Left(i); int r=Right(i); int largest; if(l A[i]) largest=l; else largest=i; if(r A[largest]) largest=r; if(largest!=i){ swap(A[i],A[largest]); MaxHeapify(largest); } } void BuildMaxHeap( vector & a){ A=a; size=A.size(); for(int i=(A.size()-1)/2;i>=0;i--){ MaxHeapify(i); } } void Heapsort(vector &a){ A=a; BuildMaxHeap(A); for(int i=A.size()-1;i>=1;i--){ swap(A[0],A[i]); --size; MaxHeapify(0); } } }; int main() { ios::sync_with_stdio(false); const char delimiter='5'; string s; while(cin>>s){ vector v; size_t pos=0; string token; while((pos=s.find(delimiter))!=string::npos){ token=s.substr(0,pos); if(pos) v.push_back(stoi(token)); s.erase(0,pos+1); } if(!s.empty()){ v.push_back(stoi(s)); } Heap heap; heap.Heapsort(v); for(int i=0;i