#include <iostream> #include<vector> using namespace std; 核心思想就是,奇偶数交叉再将最后第一位奇偶数放到最后就行 int main() { int n; cin>>n; if(n<3){ cout<<-1<<endl; return 0; } vector<int> p(n+1); //构造偶数部分的映射 for(int i=2;i<=n;i+=2){ if(i+2<=n){ p[i]=i+2; } } int last_even=(n%2==0)? n:n-1; p[last_even]=2; //构造奇数部分的映射 for(int i=1;i<=n;i+=2){ if(i+2<=n){ p[i]=i+2; } } int last_odd=(n%2==1)?n:n-1; p[last_odd]=1; for(int i=1;i<=n;i++){ cout<<p[i]<<(i==n?"":" "); } cout<<endl; return 0; } // 64 位输出请用 printf("%lld")