#include<bits/stdc++.h>
using namespace std;
using ll = long long ;
array<ll, 5> mn[100001][10];
array<pair<int,int>, 5> par[100001][10];
const ll inf = (1LL<<60)/1000;
#define LOG(x) cerr<<(#x)<<" = "<<x<<"\n";
int main() {
    int n, d;
    cin>>n>>d;
    vector<ll> t;
    for(int i=0;i<n;++i) {
        ll x;
        cin>>x;
        if(x%2==0 && d%2!=0) continue ;
        if(x%5==0 && d%5!=0) continue ;
        t.push_back(x);
    }
    n=t.size();
    
    if(n==0) {
        cout<<"-1\n";
        return 0;
    }
    
    if(d%5==0) {
        ll res=1;
        for(ll i:t) {
            res=(res*i)%10;
        }
        
        if(res%5==0) {
            cout<<t.size()<<"\n";
            for(ll i:t) cout<<i<<" ";
            cout<<"\n";
            return 0;
        }
        
        cout<<"-1\n";
        return 0;
    }
    
    for(int i=0;i<n;++i) {
        for(int j=0;j<10;++j) mn[i][j]=array<ll,5>{inf,inf,inf,inf,inf};
    }
    
    mn[0][t[0]%10][0]=1;
    mn[0][1][1]=t[0];
    
    for(int i=1;i<n;++i) {
        for(int j=0;j<10;++j) {
            for(int k=0;k<5;++k) {
                if(mn[i][(j*t[i])%10][k]>mn[i-1][j][k]) {
                    mn[i][(j*t[i])%10][k]=mn[i-1][j][k];
                    par[i][(j*t[i])%10][k]={j,k};
                }
                if(k==4) continue ;
                if(mn[i][j][k+1]>mn[i-1][j][k]*t[i]) {
                    mn[i][j][k+1]=mn[i-1][j][k]*t[i];
                    par[i][j][k+1]={j,k};
                }
                //~ mn[i][j][k+1]=min(mn[i][j][k+1], mn[i-1][j][k]*t[i]);
            }
        }
    }
    
    vector<pair<ll, vector<int>>> lst;
    
    for(int i=0;i<5;++i) {
        lst.push_back({mn[n-1][d][i],{}});
        array<int,3> st={n-1, d, i};
        while(st[0]>=0) {
            if(par[st[0]][st[1]][st[2]].second==st[2]) lst.back().second.push_back(t[st[0]]);
            tie(st[1], st[2])=par[st[0]][st[1]][st[2]];
            st[0]--;
        }
    }
    
    sort(lst.begin(), lst.end());
    while(!lst.empty() && lst[0].second.empty()) lst.erase(lst.begin());
    
    if(lst.empty() || lst[0].first==inf) {
        cout<<"-1\n";
        return 0;
    }
    
    cout<<lst[0].second.size()<<"\n";
    for(auto i:lst[0].second) cout<<i<<" ";
    cout<<"\n";
    
    return 0;
}

