#include<bits/stdc++.h>
#include<vector>
using namespace std;
const int maxn=1e5+100;
int read() 
{
	int ans=0;bool f=0;char ch=getchar();
	while(ch<'0' or ch>'9'){if(ch=='-')f=1;ch=getchar();}
	while(ch>='0' and ch<='9'){ans=(ans<<1)+(ans<<3)+(ch^48);ch=getchar();}
	return f?~ans+1:ans;
}
int n,a[maxn],zhuan[maxn][10],d,pd;
double dp[maxn][10];
vector<int>ans;
double abx(double x)
{
	return x>=0?x:-x;
}
int main()
{
	n=read(),d=read();
	for(int i=1;i<=n;++i)
	{
		a[i]=read();
		if(a[i]==1)pd=1;
	}
	for(int i=0;i<=n;++i)
	for(int j=0;j<10;++j)
	if(j!=1)
	dp[i][j]=-2e9;
	for(int i=0;i<n;++i)
	for(int j=0;j<10;++j)
	{
		if(dp[i+1][j*a[i+1]%10]<dp[i][j]+log(a[i+1]))
		dp[i+1][j*a[i+1]%10]=dp[i][j]+log(a[i+1]),zhuan[i+1][j*a[i+1]%10]=i*10+j;
		if(dp[i+1][j]<dp[i][j])
		dp[i+1][j]=dp[i][j],zhuan[i+1][j]=zhuan[i][j];
	}
	if(dp[n][d]<=1e-7 and d==1 and pd)
	{
		return printf("1\n1"),0;
	}
	if(dp[n][d]<=1e-7)
	return printf("-1\n"),0;
//	cout<<exp(dp[n][d])<<endl;
	int now=zhuan[n][d];
	while(now)
	{
		ans.push_back(a[now/10+1]);
		now=zhuan[now/10][now%10];
	}
	sort(ans.begin(),ans.end());
	printf("%d\n",ans.size());
	for(auto x:ans)
	printf("%d ",x);
	return 0;
}