打表发现,其中一组答案应该接近n / 2且它两互质,因此对于每组答案,我们枚举a从n / 2到1,此时b = n - a,只要a和b互质,那么输出即可

#include <iostream>
#include <vector>
#include <numeric>

using i64 = long long;

void solve(){
  i64 n;
  std::cin >> n;

  for(i64 a = n / 2; a >= 1; a--){
    i64 b = n - a;
    if(std::gcd(a, b) == 1){
      std::cout << a << " " << b << "\n";
      break;
    }
  }
}

int main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);
  std::cout.tie(nullptr);

  // 打表
  // for(int n = 2; n <= 100; n++){
  //   int max = -1E9, a = -1, b = -1;
  //   for(int ai = n / 2; ai >= 1; ai--){
  //     int bi = n - ai;
  //     int lcm = std::lcm(ai, bi);
  //     if(lcm > max){
  //       max = lcm;
  //       a = ai;
  //       b = bi;
  //     }
  //   }
  //   std::cout << "n: " << n << "\n";
  //   std::cout << "max, a, b: " << max << " " << a << " " << b << "\n";
  // }

  int T = 1;
  std::cin >> T;

  for(int Ti = 0; Ti < T; Ti++){
    solve();
  }

  return 0;
}