#include<bits/stdc++.h>
using namespace std;
#define N 10000100
int solve(int a){
//d(n);
int sum=a;
while(a){
sum+=a%10;
a/=10;
}
return sum;
}
int SN[N],n,k,s,NSN;
bool bucket[N];
int main(){
int t=1;
memset(bucket,true,sizeof(bucket));//先全为真
scanf("%d%d",&n,&k);//输入n,k;
for(int i=1;i<=n;i++){
//遍历找
NSN=solve(i);//NSN角标表示这个数有发生器
bucket[NSN]=false;//NSN不满足Self-Number
if(bucket[i]){
//i的bucket为真
SN[t++]=i;//记录下来
}
}
printf("%d\n",t-1);//记录 Self-Number 的个数
for(int i=0;i<k;i++){
scanf("%d",&s);//输入一个数表示第几位数
printf("%d ",SN[s]);//输出 Self-Number 的第几位数
}
printf("\n");//换行
return 0;
}