#include #include #include #include using namespace std; typedef long long ll; typedef pair P; typedef pair T; long long int INF = 2e18; const ll fact_table = 1200008; double Pi = 3.1415926535897932384626; priority_queue pql; priority_queue

pqp; priority_queue

bag; //big priority queue priority_queue ,greater > pqls; priority_queue ,greater

> pqps; //small priority queue //top pop ll dx[8]={1,0,-1,0,1,1,-1,-1}; ll dy[8]={0,1,0,-1,1,-1,-1,1}; char dir[] = "DRUL"; //↓,→,↑,← #define endl "\n" #ifdef ENJAPMA #undef endl #endif #define p(x) cout<=1; i--){ rfact[i-1] = rfact[i] * i; rfact[i-1] %= mod; } return;} ll c3(ll n,ll r){ assert(n >= r); assert(n >= 0); assert(r >= 0); return (((fact[n] * rfact[r]) % mod ) * rfact[n-r]) % mod;} */ bool multicase = false; ll n,m,num,a,b,c,d,e,q; bool used[200005]; ll k; ll x[300005]; void paintN(ll maxi, ll l, ll r); void paintM(ll maxi, ll l, ll r); void paintN(ll maxi, ll l, ll r){ if(maxi <= 4){ // 埋め込み if(maxi == 0){ x[l] = x[l+1] = x[l+2] = 0; }else if(maxi == 1){ assert(false); }else if(maxi == 2){ x[l] = x[l+2] = x[l+6] = 2; x[l+1] = x[l+4] = x[l+7] = 0; x[l+3] = x[l+5] = x[l+8] = 1; }else if(maxi == 3){ x[l] = x[l+1] = x[l+5] = 3; x[l+2] = x[l+3] = x[l+6] = 2; x[l+4] = x[l+7] = x[l+11] = 1; x[l+8] = x[l+9] = x[l+10] = 0; }else if(maxi == 4){ x[l] = x[l+9] = x[l+14] = 4; x[l+1] = x[l+2] = x[l+6] = 3; x[l+3] = x[l+4] = x[l+7] = 2; x[l+5] = x[l+8] = x[l+10] = 1; x[l+11] = x[l+12] = x[l+13] = 0; } return; } if(maxi % 2 == 0){ ll idx = l; for(ll i=maxi;i>=maxi/2;i--){ x[idx++] = i; x[idx++] = i; } for(ll i=maxi;i>=maxi/2;i--){ x[idx++] = i; } paintN(maxi/2-1, idx, r); }else{ ll idx = l; for(ll i=maxi;i>=maxi/2+1;i--){ x[idx++] = i; x[idx++] = i; } x[idx++] = maxi/2; for(ll i=maxi;i>=maxi/2+1;i--){ x[idx++] = i; } x[idx++] = maxi/2; x[idx+1] = maxi/2; paintM(maxi/2-1, idx, r); } return; } void paintM(ll maxi, ll l, ll r){ if(maxi <= 3){ if(maxi == 0){ assert(false); }else if(maxi == 1){ x[l] = x[l+2] = x[l+3] = 1; }else if(maxi == 2){ x[l] = x[l+3] = x[l+6] = 0; x[l+2] = x[l+4] = x[l+7] = 1; x[l+5] = x[l+8] = x[l+9] = 2; }else if(maxi == 3){ x[l] = x[l+4] = x[l+5] = 3; x[l+3] = x[l+7] = x[l+9] = 2; x[l+2] = x[l+6] = x[l+11] = 1; x[l+8] = x[l+10] = x[l+12] = 0; } return; } if(maxi % 2 == 0){ ll idx = r - 1; for(ll i=maxi;i>=maxi/2;i--){ x[idx--] = i; x[idx--] = i; } for(ll i=maxi;i>=maxi/2;i--){ x[idx--] = i; } paintM(maxi/2-1, l, idx+1); }else{ vector v; for(ll i=maxi;i>=maxi/2+1;i--){ v.pb(i);v.pb(i); } v.pb(maxi/2); for(ll i=maxi;i>=maxi/2+1;i--){ v.pb(i); } v.pb(maxi/2); v.pb(0); v.pb(maxi/2); reverse(v.begin(), v.end()); for(ll i=l;i> n; if(n == 2){ p(-1); return; } paintN(n-1, 0, 3*n); for(ll i=0;i<3*n-1;i++){ cout << x[i] << " "; } cout << x[3*n-1] << endl; return; } int main(){ // init(); ios::sync_with_stdio(false); cin.tie(nullptr); ll q, testcase = 1; if(multicase){ cin >> q; }else{ q = 1; } while(q--){ // pu("Case ");pu("#");pu(testcase);pu(": "); solve(); testcase++; } // solve(); return 0; }