M. Minimum LCM

time limit per test

2 seconds

memory limit per test

512 megabytes

You are given an integer n.

Your task is to find two positive (greater than 0) integers a and b such that a+b=n and the least common multiple (LCM) of a and b is the minimum among all possible values of a and b. If there are multiple answers, you can print any of them.

Input

The first line contains a single integer t (1≤t≤100) --- the number of test cases.

The first line of each test case contains a single integer n (2≤n≤109).

Output

For each test case, print two positive integers a and b --- the answer to the problem. If there are multiple answers, you can print any of them.

Example

Input

Copy

复制代码

4

2

9

5

10

Output

Copy

复制代码
1 1
3 6
1 4
5 5

Note

In the second example, there are 8 possible pairs of a and b:

  • a=1, b=8, LCM(1,8)=8;
  • a=2, b=7, LCM(2,7)=14;
  • a=3, b=6, LCM(3,6)=6;
  • a=4, b=5, LCM(4,5)=20;
  • a=5, b=4, LCM(5,4)=20;
  • a=6, b=3, LCM(6,3)=6;
  • a=7, b=2, LCM(7,2)=14;
  • a=8, b=1, LCM(8,1)=8.

In the third example, there are 5 possible pairs of a and b:

  • a=1, b=4, LCM(1,4)=4;
  • a=2, b=3, LCM(2,3)=6;
  • a=3, b=2, LCM(3,2)=6;
  • a=4, b=1, LCM(4,1)=4.

解题说明:此题是一道数学题,为了保证最小公倍数最小,直接从2到sqrt(n)遍历即可。

cpp 复制代码
#include<stdio.h>
#include<math.h>
int main() 
{
    int t, n, i;
    scanf("%d", &t);
    while (t--) 
    {
        int r = 1;
        scanf("%d", &n);
        for (i = 2; i <= sqrt(n); i++) 
        {
            if (n % i == 0) 
            {
                r = (n / i);
                break;
            }
        }
        printf("%d %d\n", r, n - r);
    }
    return 0;
}
相关推荐
从小白到软工2 天前
2-3 结构体
c
从小白到软工2 天前
2-2 函数
c
从小白到软工2 天前
2-1 二维数组
c
书生执笔画浮沉2 天前
Linux桌面端应用向鸿蒙PC迁移适配纪实
c++·qt·c·信创·海思·libc·ohos
带土12 天前
15. sscanf 函数详解
c
C++ 老炮儿的技术栈3 天前
sizeof操作符
c语言·c++·人工智能·mfc·c
多弗朗皮卡丘5 天前
数据结构番外:环形队列
数据结构·c
91刘仁德5 天前
传输层协议深度拆解:端口寻址、UDP 报文与 TCP 可靠性机制全解析
linux·网络·c++·网络协议·tcp/ip·udp·c
C++ 老炮儿的技术栈6 天前
不一样的数值交换
数据结构·c++·人工智能·算法·c·csdn开发云
C++ 老炮儿的技术栈6 天前
main函数之后的调用
c语言·c++·人工智能·qt·mfc·c