#include<bits/stdc++.h>
#include<algorithm>
#include<cmath>
#include<climits>
using namespace std;
typedef long long int lli;
typedef long double ld;
typedef vector<int> vi;
typedef vector<long long int> vlli;
typedef pair<int,int> pii;
typedef pair<long long int,long long int> plli;
typedef vector< vi > vvi ;
typedef vector< vlli > vvlli  ;
#define fi(i,a,b) for(int i=a;i<=b;i++)
#define flli(i,a,b) for(long long int i=a;i<=b;i++)
#define bi(i,a,b) for(int i=a;i>=b;i--)
#define blli(i,a,b) for(long long int i=a;i>=b;i--)
#define fast ios_base::sync_with_stdio(false),cin.tie(NULL),cout.tie(NULL)
#define all(x) x.begin(),x.end()
#define sz(x) x.size()
#define pi 2*acos(0.0)
#define pb push_back
#define tr(v,it) for(decltype(v.begin()) it=v.begin();it!=v.end();it++)
#define present(v,num) (v.find(num)!=v.end())
#define cpresent(v,num) (find(v.begin(),v.end(),num)!=v.end())
#define pq priority_queue
#define mp make_pair
const int inf=INT_MAX;
const lli INF =LLONG_MAX;
const lli mod = 1e9+7;
int main() {
    #ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    #endif
    fast;
    lli n;cin>>n;
    int d;cin>>d;
    vlli a(n);flli(i,0,n-1)cin>>a[i];
    vector<vector<ld> > dp(n+1,vector<ld>(10,0));
    vector<vector<pii> > last(n+1,vector<pii>(10,{-1,-1}));
    last[0][1]={1,-1};
    flli(i,1,n)
    {
    	flli(j1,0,9)
		{
			last[i][j1]=last[i-1][j1];
			dp[i][j1]=dp[i-1][j1];
		}
		flli(j1,0,9)
		{
			if(last[i-1][j1].first!=-1) //we can use this to make current one
			{
				int dig=a[i-1]%10;
				int curr=(j1*dig)%10;
				ld val=log2l(a[i-1]);
				if(dp[i-1][j1]+val>=dp[i][curr])
				{
					dp[i][curr]=dp[i-1][j1]+val;
					last[i][curr]={j1,i};
				}
			}
		}
    }
    if(last[n][d].first==-1 || last[n][d].second==-1)
    {
    	cout<<"-1";
    	return 0;
    }
    vlli vals;
    lli idx=last[n][d].second;
    while(idx>0)
    {
    	vals.pb(a[idx-1]);
    	d=last[idx][d].first;
    	idx=last[idx-1][d].second;
    }

    lli count=sz(vals);
    cout<<count<<endl;
    tr(vals,it)cout<<*it<<" ";
    cerr << "Time : " << 1000 * ((double)clock()) / (double)CLOCKS_PER_SEC << "ms\n";
    return 0;
}