#include <iostream>
#include <math.h>
#include <stack>

using namespace std;

struct node{
	int val;
	node *son;
	stack<node*> fathers;
};

void print_body(node *p){
	while(p!=nullptr){
		cout<<p->val<<" ";
		p=p->son;
	}
	cout<<endl;
}

int main(){
	int n,d;
	cin>>n;
	cin>>d;
	
	double vals_actual[10],vals_nuevo[10];
	node *heads_actual[10],*heads_nuevo[10];
	
	heads_actual[0]=new node;
	heads_actual[0]->son=nullptr;
	heads_actual[0]->val=-1;
	for(int j=0;j<10;j++){
		vals_actual[j]=-1;
		heads_actual[j]=heads_actual[0];
	}
	
	
	int a;
	int appends[10];
	node *aux,*aux2;
	for(int i=0;i<n;i++){
		cin>>a;
		
		for(int j=0;j<10;j++){
			vals_nuevo[j]=vals_actual[j];
			appends[j]=-1;
			heads_nuevo[j]=heads_actual[j];
		}
		
		for(int j=0;j<10;j++){
			if(vals_actual[j]!=-1){
				if(vals_actual[j]+log(double(a))>vals_nuevo[((a%10)*j)%10]){
					vals_nuevo[((a%10)*j)%10]=vals_actual[j]+log(double(a));
					heads_nuevo[((a%10)*j)%10]=heads_actual[j];
					appends[((a%10)*j)%10]=a;
				}
			}
		}
		
		if(log(a)>vals_nuevo[a%10]){
			aux=new node;
			aux->val=-1;
			aux->son=nullptr;
			
			
			heads_nuevo[a%10]=aux;
			aux=new node;
			aux->son=heads_nuevo[a%10];
			aux->val=a;
			
			heads_nuevo[a%10]->fathers.push(aux);
			heads_nuevo[a%10]=aux;
			
			vals_nuevo[a%10]=log(double(a));
		}
		
		for(int j=0;j<10;j++){
			if(appends[j]!=-1){
				aux=new node;
				aux->val=a;
				aux->son=heads_nuevo[j];
				heads_nuevo[j]->fathers.push(aux);
				heads_nuevo[j]=aux;
			}
		}
		
		swap(vals_actual,vals_nuevo);
		swap(heads_actual,heads_nuevo);
		
		/*cout<<"vals"<<endl;
		for(int j=0;j<10;j++) cout<<vals_actual[j]<<" ";
		cout<<endl;*/
		
		/*cout<<"stacks"<<endl;
		for(int j=0;j<10;j++) print_body(heads_actual[j]);*/
		
	}
	
	//cout<<"ans"<<endl;
	if(vals_actual[d]==-1){
		cout<<-1;
	}
	else{
		aux=heads_actual[d];
		stack<int> ans;
		
		while(aux->son!=nullptr){
			//print_body(aux);
			ans.push(aux->val);
			aux=aux->son;
		}
		cout<<ans.size()<<endl;
		
		while(!ans.empty()){
			cout<<ans.top()<<" ";
			ans.pop();
		}
	}
	
	/*for(int j=0;j<10;j++){
		aux=heads_nuevo[j];
		cout<<aux;
		while(aux!=nullptr){
			cout<<aux<<endl;
			while(!aux->fathers.empty()){
				aux->fathers.top()->son=nullptr;
				aux->fathers.pop();
			}
			aux2=aux;
			aux=aux->son;
			delete aux2;
		}
	}*/
	
	return 0;
}
