#include <bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,a,b) for (int i = a; i <= b; ++i)
#define pb push_back
const int MAXN = 1e5 + 10;
map<int, vector<int>> g;
map<int, bool> mk;
bool prime(int x) {
if (x%2 == 0 && x!=2) return 0;
for (int i = 3; i*i <= x; i++) if (x%i==0) return 0;
return 1;
}
void dfs(int u, vector<int> &ans, int tg) {
mk[u] = 1;
ans.pb(u);
if (u==tg) return;
for (int &v : g[u]) {
if (mk[v]) continue;
dfs(v,ans,tg);
}
if (ans.back() == tg) return;
ans.pop_back();
}
int32_t main() {
ios_base::sync_with_stdio(0);cin.tie(nullptr);
int a,b;cin >> a >> b;
if (prime(a+2)) {
g[a].pb(a+2), g[a+2].pb(a);
g[a+2].pb(2), g[2].pb(a+2);
}
if (prime(a-2)) {
g[a].pb(a-2), g[a-2].pb(a);
g[a].pb(2), g[2].pb(a);
}
if (prime(b+2)) {
g[b].pb(b+2), g[b+2].pb(b);
g[b+2].pb(2), g[2].pb(b+2);
}
if (prime(b-2)) {
g[b].pb(b-2), g[b-2].pb(b);
g[b].pb(2), g[2].pb(b);
}
vector<int> ans;
dfs(a,ans, b);
if (ans.back() != b) {
cout << "-1\n";
return 0;
}
cout << ans.size() << '\n';
for (int &v : ans) cout << v << ' ';
cout << '\n';
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |