/*
* * author: attacker
* * created: 31.03.2026 14:09:29
*/
#include <bits/stdc++.h>
using namespace std;
#ifdef LOCAL
#include "algo/debug.h"
#else
#define debug(...) 1
#endif
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
#define bpc __builtin_popcount
#define size(v) (int)(v.size())
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int64_t a, b;
cin >> a >> b;
vector<bool> okey(1001, true);
okey[1] = okey[0] = false;
for (int64_t i = 2; i * i <= int64_t(1000); i++) {
for (int j = i; j <= int64_t(1000); j += i) {
okey[j] = false;
}
}
vector<int64_t> primes;
for (int64_t i = 2; i <= 1000; i++) {
if (okey[i]) {
primes.push_back(i);
}
}
vector<int64_t> cur;
cur.push_back(a);
vector<int64_t> res;
for (int64_t& val : primes) {
if (okey[abs(val - b)]) {
int id = size(cur) - 1;
while (id >= 0 && !okey[abs(cur[id] - val)]) --id;
if (id < 0) {
continue;
} else {
for (int i = 0; i <= id; i++) {
res.push_back(cur[i]);
}
res.push_back(val);
res.push_back(b);
break;
}
} else {
int id = size(cur) - 1;
while (id >= 0 && !okey[abs(cur[id] - val)]) --id;
if (id >= 0) {
cur.insert(cur.begin() + id + 1, val);
}
}
}
if (!res.empty()) {
cout << size(res) << '\n';
for (int i = 0; i < size(res); i++) {
cout << res[i] << " \n"[i == size(res) - 1];
}
} else {
cout << -1 << '\n';
}
return 0;
}