#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
struct node
{
int b;
int c;
}q[1001],t;
int f(int a)
{
int s=0,m;
while(a>0)
{
m=a%10;
s+=m;
a=a/10;
}
return s;
}
int main()
{
int n,i,j,a[1001];
while(cin>>n)
{
if(n==0)
break;
for(i=0;i<n;i++)
{
cin>>a[i];
q[i].b=f(a[i]);
q[i].c=i;
}
for(i=0;i<n;i++)
{
for(j=0;j<n-1;j++)
{
if(q[j].b>=q[j+1].b)
{
t=q[j];
q[j]=q[j+1];
q[j+1]=t;
}
}
}
for(i=0;i<n;i++)
{
if(i==0)
cout<<a[q[i].c];
else
cout<<" "<<a[q[i].c];
}
cout<<endl;
}
}
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
struct node
{
int b;
int c;
}q[1001],t;
int f(int a)
{
int s=0,m;
while(a>0)
{
m=a%10;
s+=m;
a=a/10;
}
return s;
}
int main()
{
int n,i,j,a[1001];
while(cin>>n)
{
if(n==0)
break;
for(i=0;i<n;i++)
{
cin>>a[i];
q[i].b=f(a[i]);
q[i].c=i;
}
for(i=0;i<n;i++)
{
for(j=0;j<n-1;j++)
{
if(q[j].b>=q[j+1].b)
{
t=q[j];
q[j]=q[j+1];
q[j+1]=t;
}
}
}
for(i=0;i<n;i++)
{
if(i==0)
cout<<a[q[i].c];
else
cout<<" "<<a[q[i].c];
}
cout<<endl;
}
}