fork download
  1. #include <bits/stdc++.h>
  2. #define int long long
  3. using namespace std;
  4.  
  5.  
  6. void solve() {
  7. int n;
  8. cin>>n;
  9. vector<int> v(n+1);
  10. int sum=(n*(n+1))/2;
  11. map<int,int> mp;
  12. for(int i=1;i<=n;i++){
  13. mp[i*i]=1;
  14. }
  15. if(mp.find(sum)!=mp.end()){
  16. cout<<-1<<endl;
  17. return;
  18. }
  19. for(int i=1;i<=n;i++){
  20. v[i]=i;
  21. }
  22. sum=0;
  23. for(int i=1;i<n;i++){
  24. sum+=v[i];
  25.  
  26. if(mp.find(sum)!=mp.end()){
  27. int a=v[i],b=v[i+1];
  28. swap(v[i],v[i+1]);
  29. sum-=a;
  30. sum+=b;
  31. }
  32. }
  33. for(int i=1;i<=n;i++){
  34. cout<<v[i]<<" ";
  35. }
  36. cout<<endl;
  37.  
  38. }
  39.  
  40. signed main() {
  41. int t;
  42. cin >> t;
  43. while (t--) {
  44. solve();
  45. }
  46. return 0;
  47. }
  48.  
Success #stdin #stdout 0.01s 5288KB
stdin
1
20
stdout
2 1 3 4 5 6 7 9 8 10 11 12 13 14 15 16 17 18 19 20