// **********************************************************
// * *
// وَأَن لَّیۡسَ لِلۡإِنسَـٰنِ إِلَّا مَا سَعَىٰ وَأَنَّ سَعۡیَهُۥ سَوۡفَ یُرَىٰ *
// * *
// **********************************************************
#include<bits/stdc++.h>
#include <map>
#define FAST ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define ll long long
#define lli long long int
#define Y cout<<"YES"<<"\n";
#define N cout<<"NO"<<"\n";
//#define ll long long
#define en "\n"
const ll sz=1e7+5;
using namespace std;
int f_arr[sz];
int f_arr2[sz];
vector<bool>not_prime(sz,0);
vector<int >v;
void sieve(){
not_prime[0]=not_prime[1]=1;
for(ll i=2;i<=sz/i;i++)
{
if(!not_prime[i])
{
for(ll j=i*i;j<sz;j+=i){
not_prime[j]=1;
}
}
}
}
void take_arr(ll arr[],ll n)
{
for(ll i=0;i<n;i++)
cin>>arr[i];
}
int arr[][4]={0};
void solution() {
ll n, x;
cin >> n >> x;
int cont=0;
int mx=max(n,x);
int mn=min(n,x);
if(x==0||n==0)
cout<<0<<en;
else {
while (true){
mx=max(mx,mn);
mn=min(mx,mn);
cout<<mx<<" "<<mn<<en;
if (mx<=1)
break;
else if (mn==0)
break;
mx-=2;
mn-=1;
cont++;
}
cout<<cont<<en;}
}
int32_t main() {
FAST
int test_case=1;cin>>test_case;
while(test_case--){
solution();
}
//----------->>
return 0;
}
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgINmI2Y7Yo9mO2YYg2YTZkdmO24zbodiz2Y4g2YTZkNmE26HYpdmQ2YbYs9mO2YDZsNmG2ZAg2KXZkNmE2ZHZjtinINmF2Y7YpyDYs9mO2LnZjtmJ2bAg2YjZjtij2Y7ZhtmR2Y4g2LPZjti526HbjNmO2YfZj9ulINiz2Y7ZiNuh2YHZjiDbjNmP2LHZjtmJ2bAgICAgICAgICAgICAqCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgojaW5jbHVkZSA8bWFwPgojZGVmaW5lIEZBU1QgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKSxjaW4udGllKDApLGNvdXQudGllKDApOwojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGxsaSBsb25nIGxvbmcgaW50CiNkZWZpbmUgWSBjb3V0PDwiWUVTIjw8IlxuIjsKI2RlZmluZSBOIGNvdXQ8PCJOTyI8PCJcbiI7Ci8vI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBlbiAiXG4iCgpjb25zdCBsbCBzej0xZTcrNTsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IGZfYXJyW3N6XTsKaW50IGZfYXJyMltzel07CnZlY3Rvcjxib29sPm5vdF9wcmltZShzeiwwKTsKdmVjdG9yPGludCA+djsKdm9pZCBzaWV2ZSgpewogICAgbm90X3ByaW1lWzBdPW5vdF9wcmltZVsxXT0xOwogICAgZm9yKGxsIGk9MjtpPD1zei9pO2krKykKICAgIHsKICAgICAgICBpZighbm90X3ByaW1lW2ldKQogICAgICAgIHsKICAgICAgICAgICAgZm9yKGxsIGo9aSppO2o8c3o7ais9aSl7CiAgICAgICAgICAgICAgICBub3RfcHJpbWVbal09MTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCn0Kdm9pZCAgdGFrZV9hcnIobGwgYXJyW10sbGwgbikKewogICAgZm9yKGxsICBpPTA7aTxuO2krKykKICAgICAgICBjaW4+PmFycltpXTsKfQppbnQgYXJyW11bNF09ezB9Owp2b2lkIHNvbHV0aW9uKCkgewogICAgbGwgbiwgeDsKICAgIGNpbiA+PiBuID4+IHg7CiAgICBpbnQgY29udD0wOwogICAgaW50IG14PW1heChuLHgpOwogICAgaW50IG1uPW1pbihuLHgpOwogICAgaWYoeD09MHx8bj09MCkKICAgICAgICBjb3V0PDwwPDxlbjsKICAgIGVsc2UgewogICAgd2hpbGUgKHRydWUpewogICAgICAgIG14PW1heChteCxtbik7CiAgICAgICAgbW49bWluKG14LG1uKTsKICAgICAgICBjb3V0PDxteDw8IiAiPDxtbjw8ZW47CiAgICAgICAgaWYgKG14PD0xKQogICAgICAgICAgICBicmVhazsKICAgICAgICBlbHNlIGlmIChtbj09MCkKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgbXgtPTI7CiAgICAgICAgbW4tPTE7CiAgICAgICAgY29udCsrOwoKICAgIH0KICAgIGNvdXQ8PGNvbnQ8PGVuO30KfQoKCmludDMyX3QgbWFpbigpIHsKICAgIEZBU1QKICBpbnQgdGVzdF9jYXNlPTE7Y2luPj50ZXN0X2Nhc2U7CiAgICB3aGlsZSh0ZXN0X2Nhc2UtLSl7CiAgICAgICAgc29sdXRpb24oKTsKICAgIH0KCi8vLS0tLS0tLS0tLS0+PgogICAgcmV0dXJuIDA7Cn0=