#include<bits/stdc++.h>
using namespace std;
#define int long long
#define gcd __gcd
bool prime(int x)
{
if(x<=1)return 0;
for(int i=2;i*i<=x;i++)if(!(x%i))return 0;
return 1;
}
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int a,b,A,B;
cin>>a>>b;
A=a;
B=b;
bool bl=1;
vector<int>lf,rh;
lf.push_back(a);
rh.push_back(b);
if(prime(abs(a-b)))
{
cout<<2<<endl;
cout<<a<<' '<<b<<endl;
return 0;
}
for(int x=1;x<=28;x++)
{
// cout<<a<<' '<<prime(a+2)<<' '<<b<<' '<<prime(b+2)<<endl;
if(prime(a+2))
{
a+=2;
lf.push_back(a);
if(prime(abs(a-b)))break;
}
else if(prime(b+2))
{
b+=2;
rh.push_back(b);
// cout<<b<<endl;
if(prime(abs(a-b)))break;
}
}
if(prime(abs(a-b)))
{
cout<<lf.size()+rh.size()<<endl;
for(int x=0;x<lf.size();x++)cout<<lf[x]<<' ';
for(int x=rh.size()-1;x>=0;x--)cout<<rh[x]<<' ';
return 0;
}
lf.clear();
rh.clear();
a=A;
b=B;
lf.push_back(a);
rh.push_back(b);
for(int x=1;x<=28;x++)
{
if(prime(a+2))
{
a+=2;
lf.push_back(a);
if(prime(abs(a-b)))break;
}
else if(prime(b-2))
{
b-=2;
rh.push_back(b);
if(prime(abs(a-b)))break;
}
}
if(prime(abs(a-b)))
{
cout<<lf.size()+rh.size()<<endl;
for(int x=0;x<lf.size();x++)cout<<lf[x]<<' ';
for(int x=rh.size()-1;x>=0;x--)cout<<rh[x]<<' ';
return 0;
}
lf.clear();
rh.clear();
a=A;
b=B;
lf.push_back(a);
rh.push_back(b);
for(int x=1;x<=28;x++)
{
if(prime(a-2))
{
a-=2;
lf.push_back(a);
if(prime(abs(a-b)))break;
}
else if(prime(b-2))
{
b-=2;
rh.push_back(b);
if(prime(abs(a-b)))break;
}
}
if(prime(abs(a-b)))
{
cout<<lf.size()+rh.size()<<endl;
for(int x=0;x<lf.size();x++)cout<<lf[x]<<' ';
for(int x=rh.size()-1;x>=0;x--)cout<<rh[x]<<' ';
return 0;
}
lf.clear();
rh.clear();
a=A;
b=B;
lf.push_back(a);
rh.push_back(b);
for(int x=1;x<=28;x++)
{
if(prime(a-2))
{
a+=2;
lf.push_back(a);
if(prime(abs(a-b)))break;
}
else if(prime(b-2))
{
b-=2;
rh.push_back(b);
if(prime(abs(a-b)))break;
}
}
if(prime(abs(a-b)))
{
cout<<lf.size()+rh.size()<<endl;
for(int x=0;x<lf.size();x++)cout<<lf[x]<<' ';
for(int x=rh.size()-1;x>=0;x--)cout<<rh[x]<<' ';
return 0;
}
cout<<-1<<endl;
}