#include<bits/stdc++.h>

using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef unsigned int uint;
typedef pair<int, int> pii;

const int MOD = 998244353;

int n, d;
int a[100005];
ll dp[100005][10];
int from[100005][10];
bool ban[100005];

void solvenot0(int n, bool show) {
    int prod = 1;
    for (int i = 1; i <= n; ++i)
        prod = prod * a[i] % 10;
    const ll INF = 1e18;
    for (int i = 0; i <= n; ++i) {
        for (int digit = 0; digit <= 9; ++digit)
            dp[i][digit] = INF;
    }
    dp[0][1] = 1;
    for (int i = 0; i < n; ++i) {
        for (int digit = 0; digit <= 9; ++digit) {
            if (dp[i][digit] == INF)
                continue;
            if (dp[i + 1][digit] > dp[i][digit] * a[i + 1]) {
                dp[i + 1][digit] = dp[i][digit] * a[i + 1];
                from[i + 1][digit] = digit + 10;
            }
            if (dp[i + 1][digit * a[i + 1] % 10] > dp[i][digit]) {
                dp[i + 1][digit * a[i + 1] % 10] = dp[i][digit];
                from[i + 1][digit * a[i + 1] % 10] = digit;
            }
        }
    }
    int curd = d;
    if (dp[n][curd] == INF) {
        puts("-1");
        return;
    }
    for (int i = 1; i <= n; ++i)
        ban[i] = 0;
    int cnt = 0;
    for (int i = n; i >= 1; --i) {
        int f = from[i][curd];
        if (f >= 10) {
            ban[i] = 1;
            ++cnt;
            curd = f - 10;
        } else
            curd = f;
    }
    assert(curd == 1);
    printf("%d\n", n - cnt);
    for (int i = 1; i <= n; ++i) {
        if (ban[i])
            continue;
        printf("%d ", a[i]);
    }
    printf("\n");
    return;
}

void banx(int x) {
    for (int i = 1; i <= n; ++i) {
        while (i <= n && a[i] % x == 0) {
            swap(a[i], a[n]);
            --n;
        }
    }
}

void solve() {
    scanf("%d%d", &n, &d);
    for (int i = 1; i <= n; ++i)
        scanf("%d", &a[i]);
    if (d % 2 != 0)
        banx(2);
    if (d % 5 != 0)
        banx(5);
    if (n == 0) {
        puts("-1");
        return;
    }
    sort(a + 1, a + 1 + n);
    int prod = 1;
    for (int i = 1; i <= n; ++i)
        prod = prod * a[i] % 10;
    if (prod == d) {
        printf("%d\n", n);
        for (int i = 1; i <= n; ++i)
            printf("%d ", a[i]);
        printf("\n");
        return;
    }
    if (d == 0) {
        puts("-1");
        return;
    }
    assert(prod != 0);
    solvenot0(n, 1);
    return;
}


int main() {
    int T = 1;
//    scanf("%d", &T);
    for (int i = 1; i <= T; ++i) {
//        printf("Case #%d: ", i);
        solve();
    }
}
