/*
coded by nghoangphu
*/
#include <bits/stdc++.h>

#define oo 1000000007
#define bug(a) cout << #a << ": " << a << endl
#define bug2(a, b) cout << #a << ": " << a << "; " << #b << ": " << b << endl
#define bugarr(a, i, j) cout << #a << "[" << i << ".." << j << "]: "; for(int k = i; k < j; ++k) cout << a[k] << ", "; cout << a[j] << endl;
#define fto(i, x, y) for (int i = (int)(x); i <= (int)(y); ++i)
#define fdto(i, x, y) for (int i = (int)(x); i >= (int)(y); --i)
#define forit(it, var) for(__typeof(var.begin()) it = var.begin(); it != var.end(); ++it)
#define forrit(rit, var) for(__typeof(var.rbegin()) rit = var.rbegin(); rit != var.rend(); ++rit)
#define ff first
#define ss second
#define ii pair<int, int>
#define vi vector<int>
#define vii vector<ii>
#define ll long long
#define mp make_pair
#define pb push_back
#define sz(a) (int)a.size()
#define sci(a) scanf("%d", &a)
#define scii(a, b) scanf("%d %d", &a, &b)
#define pri(a) printf("%d ", a)
#define pril(a) printf("%d\n", a)
#define maxN 100005
#define EPS 1e-9

using namespace std;

int n, k, a[maxN], r[maxN], trace[maxN][10];
double l[maxN], f[maxN][10];
vi ans;

int main() {
    #ifndef ONLINE_JUDGE
        freopen("mps.inp", "r", stdin);
        freopen("mps.out", "w", stdout);
    #endif // ONLINE_JUDGE

    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    cin >> n >> k;
    fto(i, 1, n) {
        cin >> a[i];
        r[i] = a[i]%10;
        l[i] = log(a[i]);
    }

    fto(i, 0, n) {
        fto(j, 0, 9) f[i][j] = -oo;
    }

    //bugarr(a, 1, n);
    //bugarr(r, 1, n);
    //bugarr(l, 1, n);

    f[0][1] = 0;
    fto(i, 1, n) {
        fto(j, 0, 9) f[i][j] = f[i-1][j];
        fto(j, 0, 9) {
            int x = j*r[i] % 10;
            if (f[i-1][j] + EPS > 0 && f[i][x] < f[i-1][j] + l[i] + EPS) {
                f[i][x] = f[i-1][j] + l[i];
                trace[i][x] = j;
            }
        }
    }

    if (f[n][k] < EPS) cout << - 1 << '\n';
    else {
        int i = n;
        int j = k;
        while (i >= 1) {
            if (f[i][j] > f[i-1][j] + EPS) {
                ans.pb(a[i]);
                j = trace[i][j];
            }
            --i;
        }
        cout << ans.size() << '\n';
        forit(it, ans) cout << *it << " ";
        cout << '\n';
    }
    return 0;
}


