#include<bits/stdc++.h>

using namespace std;
using ll = long long;
using pint = pair<ll,ll>;
void solve();
const ll INF = 3e9;
int main()
{
    ll T;
    cin >> T;
    while(T--)solve();
}

struct C {
   ll t;
   ll x;
   C():t(0),x(0){}
   C(ll x, ll y):t(x), x(y){}
   bool operator==(const C& y) { return (t == y.t && x == y.x); }
   bool operator!=(const C& y) { return (t != y.t || x != y.x); }
   bool operator< (const C& y) {return (t == y.t ? x < y.x : t < y.t); }
   bool operator> (const C& y) {return (t == y.t ? x > y.x : t > y.t); }
};

void solve()
{
    ll n; cin >> n;
    vector<C> c(n);
    for(ll i = 0; i < n; i++)cin >> c[i].t >> c[i].x; //t / 
    c.push_back({INF, 0});

    ll ans = 0;
    ll past = 0, tar = 0;
    bool stop = true;

    //past := c[i]番目のコマンド実行時にどこにいるか
    // sttime := c[i]番目のコマンドの実行時
    // tar := 現在入力されている目的地

    for(ll i = 0; i < n; i++) {
        //止まっているとき
        if(stop) {

            past = tar;
            tar = c[i].x;
            stop = false;
            if(abs(past - tar) <= c[i + 1].t - c[i].t) {
                stop = true;
                ans++;
            }

        } else { //動いているとき

            //通過するか判定
            ll pt = c[i].t - c[i - 1].t;
            past = past + ((tar - past) < 0 ? -1 : 1) * pt;
            pt = c[i + 1].t - c[i].t;
            ll nxt = past + ((tar - past) < 0 ? -1 : 1) * pt;

            if((__int128_t)(past - tar) * (nxt - tar) <= 0) {
                stop = true;
                nxt = tar;
            }

            if((__int128_t)(past - c[i].x) * (nxt - c[i].x) <= 0) {
                ans++;
            }
        }
    }


    cout << ans << endl;
}