t = int(input())
for _ in range(t):
a,b = map(int,input().split())
if a == b:
print(0,0)
continue
m = abs(a-b)
if a%m==0:
print(m,0)
else:
x = m-(a%m)
y = a-((a//m)*m)
print(m,min(x,y))
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
ll t;
cin>>t;
while(t--)
{
ll x,y;
cin>>x>>y;
if(x==y){
cout<<"0"<<" "<<"0"<<endl;
continue;
}
else
{
ll a=abs(x-y);
ll b=x%a;
ll c=y%a;
if(b!=c)
{
cout<<"0"<<" "<<"0"<<endl;
}
else
{
ll ans=min(a-b,b);
cout<<a<<" "<<ans<<endl;
}
}
}
}
136. Single Number | 169. Majority Element |
119. Pascal's Triangle II | 409. Longest Palindrome |
1574A - Regular Bracket Sequences | 1574B - Combinatorics Homework |
1567A - Domino Disaster | 1593A - Elections |
1607A - Linear Keyboard | EQUALCOIN Equal Coins |
XOREQN Xor Equation | MAKEPAL Weird Palindrome Making |
HILLSEQ Hill Sequence | MAXBRIDGE Maximise the bridges |
WLDRPL Wildcard Replacement | 1221. Split a String in Balanced Strings |
1002. Find Common Characters | 1602A - Two Subsequences |
1555A - PizzaForces | 1607B - Odd Grasshopper |
1084A - The Fair Nut and Elevator | 1440B - Sum of Medians |
1032A - Kitchen Utensils | 1501B - Napoleon Cake |
1584B - Coloring Rectangles | 1562B - Scenes From a Memory |
1521A - Nastia and Nearly Good Numbers | 208. Implement Trie |
1605B - Reverse Sort | 1607C - Minimum Extraction |