思路:思维题。首先直接算最大的lcm比较困难,我们用另一个转换式子:,这个写法是防溢出的。因此我们要让最大,就需要让最大,最小

对于最大这个要求来说,我们根据题目说的条件,以及高中学过的基本不等式,即的前提下,有,转化式子得到,当且仅当时取得的最大值

对于最小来说,他只可能是1,因此我们可以写个gcd函数来方便后面的验证,当然python也可以直接调用math.gcd,这里我习惯自己手写

所以说有了上面两个分析之后,我们就可以先把一分为二,然后再判断是否为1。如果两者的为1,不用操作;如果不为1,那就不断a--和b++(这样能保证两者的和始终为n),直到两者的gcd为1时停止。最终,输出结果即可

代码:

import sys
input = lambda: sys.stdin.readline().strip()

import math
inf = 10 ** 18

def I():
    return input()

def II():
    return int(input())

def MII():
    return map(int, input().split())

def LI():
    return input().split()

def LII():
    return list(map(int, input().split()))

def LFI():
    return list(map(float, input().split()))

fmax = lambda x, y: x if x > y else y
fmin = lambda x, y: x if x < y else y
isqrt = lambda x: int(math.sqrt(x))

'''

'''

def gcd(a, b):
    return a if b == 0 else gcd(b, a % b)

def solve():
    n = II()

    a, b = n // 2, n - n // 2
    while gcd(a, b) != 1:
        a -= 1
        b += 1

    print(a, b)

# t = 1
t = II()
for _ in range(t):
    solve()