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;
}