class Solution {
public:
static bool ms(string str1,string str2){
if(str1.size()>str2.size()){
for(int i=0;i<str2.size();i++){
if(str1[i]>str2[i]){
return false;
}
else if(str1[i]<str2[i]){
return true;
}
}
return ms(str1.substr(str2.size(),str1.size()-str2.size()),str2);
}
else if(str1.size()<str2.size()){
for(int i=0;i<str1.size();i++){
if(str2[i]>str1[i]){
return true;
}
else if(str2[i]<str1[i]){
return false;
}
}
return ms(str1,str2.substr(str1.size(),str2.size()-str1.size()));
}
else{
for(int i=0;i<str1.size();i++){
if(str2[i]>str1[i]){
return true;
}
else if(str2[i]<str1[i]){
return false;
}
}
return false;
}
}
string PrintMinNumber(vector<int> numbers) {
string str="";
vector<string> strs(numbers.size());
for(int i=0;i<strs.size();i++){
string str0="";
if(numbers[i]==0){
str0="0";
}
while(numbers[i]!=0){
string s=" ";
s[0]=(char)(numbers[i]%10+48);
str0=s+str0;
numbers[i]/=10;
}
strs[i]=str0;
}
sort(strs.begin(),strs.end(),ms);
for(int i=0;i<strs.size();i++){
str=str+strs[i];
}
return str;
}
};