fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3.  
  4. using namespace std;
  5.  
  6. const int MOD = 1e9 + 7;
  7.  
  8. void solve(){
  9. int n;
  10. cin >> n;
  11.  
  12. vector<int> b(n / 2), d(n + 1);
  13. bool done = false;
  14. set<int> s;
  15. for(int i = 1; i <= n; i++)s.insert(i);
  16. for(int i = 0; i < n / 2; i++){
  17. cin >> b[i];
  18. d[b[i]]++;
  19. if(d[b[i]] > 1)done = true;
  20. s.erase(b[i]);
  21. }
  22.  
  23. if(done){
  24. cout << -1 << "\n";
  25. return;
  26. }
  27. vector<int> ans;
  28.  
  29. for(int i = n / 2 - 1; i >= 0; i--){
  30. if(*(s.begin()) > b[i]){
  31. cout << -1 << "\n";
  32. return;
  33. }
  34. auto g = s.lower_bound(b[i]);
  35. g--;
  36. ans.push_back(b[i]);
  37. ans.push_back(*g);
  38. s.erase(*g);
  39. }
  40. reverse(ans.begin(), ans.end());
  41. for(auto x: ans)cout << x <<" ";
  42. cout << "\n";
  43. }
  44.  
  45. int main(){
  46. ios_base::sync_with_stdio(false);
  47. cin.tie(nullptr);
  48.  
  49. int t = 1;
  50. cin >> t;
  51.  
  52. for(int i = 1; i <= t; i++){
  53. solve();
  54. }
  55. return 0;
  56. }
Success #stdin #stdout 0.01s 5284KB
stdin
6
6
4 3 6
4
2 4
8
8 7 2 3
6
6 4 2
4
4 4
8
8 7 4 5
stdout
1 4 2 3 5 6 
1 2 3 4 
-1
5 6 3 4 1 2 
-1
1 8 6 7 2 4 3 5