#include<bits/stdc++.h>
using namespace std;
#define ii pair<int,int>
#define fi first
#define se second
#define pb push_back
const int N=2e6+10;
struct p{
    int l, r,id;
    p(int x,int y,int z){
        l=x;
        r=y;
        id=z;
    }
};
bool cmp(p x,p y){
    return x.l<=y.l;
}
vector<p> v[N];
int a[N],b[N],c[N],m[N],ans[N];
void solve(){
    int n;
    cin>>n;
    int res=0;
    for(int i=1;i<=n;i++){
        cin>>a[i]>>b[i]>>m[i];
        v[a[i]+b[i]-m[i]].pb(p(a[i]-m[i],a[i],i));
    }
    for(int i=1;i<=n;i++){
        int k=a[i]+b[i]-m[i];
        vector<int> tem;
        tem.clear();
        sort(v[k].begin(),v[k].end(),cmp);
        int dau,cuoi=-1;
        for(int j=0;j<v[k].size();j++){
            int t=max(0,v[k][j].l);
            if(cuoi<t){
                res++;
                for(auto x:tem) ans[x]=a[x]-dau;
                dau=t;
                cuoi=v[k][j].r;
                tem.clear();
                tem.pb(v[k][j].id);
            }
            else{
                dau=max(dau,t);
                cuoi=min(cuoi,v[k][j].r);
                tem.pb(v[k][j].id);
            }
        }
        for(auto x:tem) ans[x]=a[x]-dau;
        v[k].clear();
    }
    cout<<res<<'\n';
    for(int i=1;i<=n;i++){
        cout<<ans[i]<<' '<<m[i]-ans[i]<<'\n';
    }    

}
int32_t main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    int tt;
    cin>>tt;
    while(tt--){
        solve();
    }
}