작은 수

시간 제한2초메모리 제한512 MB

요약
양의 정수 a와 b를 공통約수로 나누거나 두 수 사이로 옮기는 연산으로 줄일 때 최소합과 이를 만족하는 두 수를 구한다.
난이도

어려움10점 중 8점

유형
정수론, 수학, 그리디, 구현
정답자
아직 제출이 없습니다

문제

꼬마 블라드는 좋아하는 두 수 aa와 bb를 가지고 있다. 최근 학교에서 나눗셈과 곱셈을 배운 그는 곧바로 좋아하는 수를 나누고 곱하기 시작했다.

그는 공책에 aa와 bb를 적고, 두 수에 적용할 수 있는 세 가지 연산을 생각해 냈다.

  • 두 수를 공약수 하나로 나눈다.
  • aa를 aa의 약수 gg 하나로 나누고, bb에 gg를 곱한다.
  • bb를 bb의 약수 gg 하나로 나누고, aa에 gg를 곱한다.

연산을 한 번 수행할 때마다 그는 기존의 수를 지우고 새로운 수로 바꾼다. 연산을 계속할지 그만둘지는 그가 정한다.

블라드는 어리기 때문에 수가 작아지기를 바란다. 그래서 a+ba+b를 최소로 만들려고 하지만 혼자서는 해내지 못한다. 이 연산들로 얻을 수 있는 합의 최솟값을 구하고, 그 합을 가지는 최종 aa와 bb의 예를 하나 제시하자.

입력

입력은 여러 테스트 케이스로 이루어진다. 첫째 줄에 테스트 케이스의 수 tt가 주어진다 (1≤t≤5001 \le t \le 500).

각 테스트 케이스는 한 줄에 두 정수 aa와 bb로 주어진다 (1≤a,b≤1091 \le a, b \le 10^9). 이는 블라드가 좋아하는 수이다.

출력

각 테스트 케이스마다 한 줄에, 위 연산들로 얻을 수 있는 합이 최소인 순서쌍 하나를 출력한다.

예제1

  1. 예제 1

    입력
    2
    4 5
    4 6
    
    예상 출력
    1 5
    2 3