#include<iostream>
#include<algorithm>
#include<string>
#include<math.h>
#include<stdlib.h>
#include <iostream>
#include <vector>
#include <queue>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<stack>
#include<iostream>
#include<set>
#include<map>
using namespace std;
int b[100];
int total=0;
int n=10;
set<int> sss;
void dfs(int t)
{
int i,temp;
if(t==total-1)
{
int zzz=0;
for(i=0;i<total;i++)
zzz=b[i]+zzz*10;
if(zzz<=n&&b[0]!=0){
sss.insert(zzz);
// cout<<zzz<<endl;
}
}else
{
for(i=t;i<total;i++)
{
temp=b[i],b[i]=b[t],b[t]=temp;
dfs(t+1);
temp=b[i],b[i]=b[t],b[t]=temp;//恢復原狀
}
}
}
int main()
{
int a[10];
int sum=0;
for(int i=0;i<n;i++){
cin>>a[i];
sum+=a[i];
}
if(sum==0){
cout<<"NO ANSWER";
return 0;
}
sum=sum+1;
// cout<<sum<<endl;
int temp=9,temp2=1;
n=0;
int x=0;
for(int i=1;i<100;i++)
{
if(sum-temp>0){
sum-=temp;
temp*=10;
sum+=1;
for(int j=1;j<=9;j++){
a[j]--;
// cout<<a[j]<<' ';
}
// cout<<endl;
temp2*=10;
}
else{
// cout<<sum<<endl;
int kk=sum%i;
while(kk){
temp2/=10;
kk--;
}
n=sum/i+temp/10;
int flag=0;
for(int j=temp2;j<=n;j++){
int temp3=j;
// for(int k=0;k<=9;k++) cout<<a[k]<<' ';
// cout<<endl;
// if(flag==1) break;
while(temp3){
if(a[temp3%10]-1<0){
// cout<<temp3%10<<endl;
b[total++]=temp3%10;
// s.insert(j);
// break;
}
else a[temp3%10]--;
temp3/=10;
}
}
break;
}
}
if(total==0){
cout<<"NO ANSWER";
return 0;
}
dfs(0);
set<int>::iterator iter=sss.begin();
while(iter!=sss.end())
{
cout<<n<<' '<<*iter<<endl;
++iter;
}
return 0;
}
/*
0 1 1 0 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
2 12 9 3 3 3 3 2 2 2
2 11 10 3 3 3 3 2 2 2
*/