Link to this code:
https://cses.fi/paste/3153cdc93ae3fc4fe1912e/#include <bits/stdc++.h>
using namespace std;
map<int, vector<int>> mp;
void print(int n) {
int idk = n / 10;
for (int j = 0; j < idk; ++j) {
for (int i : mp[0]) cout << (i + j * 10) << " ";
}
}
void solve() {
mp[4] = {2, 4, 1, 3};
mp[5] = {1, 3, 5, 2, 4};
mp[6] = {1, 3, 5, 2, 4, 6};
mp[7] = {1, 3, 5, 2, 6, 4, 7};
mp[8] = {1, 3, 5, 2, 6, 8, 4, 7};
mp[9] = {1, 3, 5, 2, 4, 7, 9, 6, 8};
mp[0] = {1, 3, 5, 2, 4, 6, 8, 10, 7, 9};
int n;
cin >> n;
if (n == 1) {
cout << 1 << "\n";
return;
}
if (n < 4) {
cout << "NO SOLUTION\n";
return;
}
int rem = n % 10;
if (n > 10) print(n);
if (n <= 10) {
int key = (n == 10) ? 0 : n;
for (int i: mp[key]) cout << i << " ";
} else if (rem == 2) {
cout << n - 1 << " " << n - 2 << " " << n;
} else if (rem == 3){
cout << n - 1 << " " << n - 3
<< " " << n - 2 << " " << n;
} else if(rem == 0) {
return;
} else {
int base = n - rem;
for (int i : mp[rem]) cout << i + base << " ";
}
cout << "\n";
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
solve();
return 0;
}