#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define sz(x) (int)x.size()
#define int long long
#define ld long double

const int MOD = 1e9 + 7;
const int MAX_N = 1e6 + 5;
using pii = pair<long long, long long>;

int32_t main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int n, d;
    cin >> n >> d;
    int arr[n];
    for (int i = 0; i < n; i++) {
        cin >> arr[i];
    }
    pair<pii, int> par[n + 1][10][2];
    ld val[n + 1][10][2];
    for (int i = 0; i <= n; i++)
        for (int j = 0; j < 10; j++) {
            for (int k = 0; k < 2; k++) {
                par[i][j][k] = {{-2, -2}, -1};
                val[i][j][k] = -2;
            }
        }
    par[0][1][0] = {{-1, -1}, -1};
    val[0][1][0] = 0;
    for (int i = 1; i <= n; i++) {
        for (int j = 0; j < 10; j++) {
            for (int k = 0; k < 2; k++) {
                if (val[i - 1][j][k] > val[i][j][0] && val[i - 1][j][k] >= 0) {
                    val[i][j][0] = val[i - 1][j][k];
                    par[i][j][0] = {{i - 1, j}, k};
                }
                int nd = j * (arr[i - 1] % 10);
                nd %= 10;
                ld nval = val[i - 1][j][k] + log2l(arr[i - 1]);
                // if (i == 5 && j == 4) {
                //     cout << "WOT" << nval << " " << val[i - 1][j][k] << "\n";
                // }
                if (nval > val[i][nd][1] && val[i - 1][j][k] >= 0) {
                    val[i][nd][1] = nval;
                    par[i][nd][1] = {{i - 1, j}, k};
                }
            }
        }
    }
    int ck = 0;
    vector<int> anss;
    int ci = n;
    int cd = d;
    if (val[n][d][0] < 0 && val[n][d][1] < 0) {
        cout << -1;
        return 0;
    }
    if (val[n][d][0] > val[n][d][1]) {
        ck = 0;

    } else {
        ck = 1;
    }
    while (ci > 0) {
        // cout << ci << endl;
        if (ck == 1) {
            anss.pb(arr[ci - 1]);
        }
        int nci = par[ci][cd][ck].first.first;
        // cout << "nci: " << ci << endl;
        int ncd = par[ci][cd][ck].first.second;
        int nck = par[ci][cd][ck].second;
        ci = nci;
        cd = ncd;
        ck = nck;
    }
    sort(anss.begin(), anss.end());
    if (anss.size() == 0) {
        cout << -1;
        return 0;
    }
    cout << anss.size() << "\n";
    for (int i : anss) {
        cout << i << " ";
    }
    cout << "\n";

    return 0;
}
