#include <stdio.h>>
int n,m;
const int Max=1000;
int a[Max];
int k[100005];
int N=0;
int zero(int *A){
	for(int i=0;i<Max;i++){
		A[i]=0;
	}
	return 0;
}
int correct(int *A){
	for(int i=Max-1;i>0;i--){
		A[i-1]+=A[i]/10;
		A[i]=A[i]%10;
	}
	return 0;
}
int mod(int *A,int M){
	int T=0;
	for(int i=0;i<Max;i++){
		T*=10;
		T+=A[i];
		T=T%M;
	}
	return T;
}
int div(int *A,int M){
	int T=0;
	for(int i=0;i<Max;i++){
		T*=10;
		T+=A[i];
		A[i]=T/M;
		T=T%M;
		
	}
	return T;
}
int mul(int *A,int M){
	for(int i=0;i<Max;i++){
		A[i]*=M;
	}
	correct(A);
	return 0;
}
int pr(int *A){
	int i=0;
	while(A[i]==0){
		i++;
	}
	for(;i<Max;i++){
		printf("%d",A[i]);
	}
	printf("\n");
	return 0;
}
int Sol(){
	a[Max-1]=1;
	for(int i=0;i<n ;i++){
		if(mod(a,m)==0){
			k[N++]=i+1;
			//k[N++]=n-i-1;
		}
	//	pr(a);
	//	printf("i== %d mul %d   div %d \n",i,n-i-1,i+1);
		mul(a,n-i-1);
		div(a,i+1);
	
	}
	return 0;
}
int set(int *A,int M){
	zero(A);
	A[Max-1]=M;
	correct(A);
	return 0;
}
int main(){
	FILE *f=fopen("irrelevant.in","r");
	fscanf(f,"%d%d",&n,&m);
	fclose(f);
	N=0;
	Sol();
	f=fopen("irrelevant.out","w");
	fprintf(f,"%d\n",N);
	for(int i=0;i<N;i++){
		fprintf(f,"%d ",k[i]);
	}
	return 0;
}