#include<stdio.h>#include<math.h>#include<string.h>#include<algorithm>#include<iostream>using namespace std;typedef long long ll;typedef long double lf;const ll mod=10000000;const int maxn=6;struct bigint{ll a[maxn];bigint(ll tet=0){memset(a,0,sizeof(a));for(int i=0;i<maxn;i++){a[i]=tet%mod;tet/=mod;}}};bool operator <(bigint a,bigint b){int i,j;for(i=maxn-1;i>=0;i--)if(a.a[i]!=b.a[i])return a.a[i]<b.a[i];return false;}bool operator ==(bigint a,bigint b){return !(a<b)&&!(b<a);}bigint operator +(bigint a,bigint b){bigint res;for(int i=0;i<maxn;i++) res.a[i]=a.a[i]+b.a[i];for(int i=0;i<maxn-1;i++) res.a[i+1]+=(res.a[i]/mod),res.a[i]%=mod;return res;}bigint operator -(bigint a,bigint b){bigint res;if(a==b||a<b) return res;for(int i=0;i<maxn;i++) res.a[i]=a.a[i]-b.a[i];for(int i=0;i<maxn-1;i++){if(res.a[i]<0) {res.a[i]+=mod;res.a[i+1]--;}}return res;}bigint operator *(bigint a,bigint b){bigint res;int i,j;for(i=0;i<maxn/2;i++) for(j=0;j<maxn/2;j++) res.a[i+j]+=(a.a[i]*b.a[j]);for(i=0;i<maxn-1;i++) res.a[i+1]+=(res.a[i]/mod),res.a[i]%=mod;return res;}bigint c2(bigint a){for(int i=maxn-1;i>=0;i--) {if(i&&a.a[i]%2) {a.a[i-1]+=mod;}a.a[i]/=2;}return a;}ll zh(bigint a){ll te=0;for(int i=maxn-1;i>=0;i--) te=te*mod+a.a[i];return te;}void print(bigint a){int i,j;for(i=maxn-1;i>=0;i--) if(a.a[i]||!i) {printf("%lld",a.a[i]);break;}for(--i;i>=0;i--) printf("%07lld",a.a[i]);printf("n");}void Sqrt(bigint a,ll &r1,ll &r2){if(a==bigint(0)) {r1=r2=0;return;}bigint at(0),bt(100000000),tt,ss;bt=bt*bt*bigint(100);while(bigint(1)<bt-at){tt=c2(at+bt);ss=tt*tt;if(ss==a) {r1=zh(tt);r2=r1;return;}if(ss<a) at=tt;else bt=tt;}r1=zh(at);r2=r1+1;}void gcd(ll a,ll b,ll &d,ll &x,ll &y){if(!b) {d=a;x=1;y=0;}else {gcd(b,a%b,d,y,x);y-=(a/b)*x;}}ll tabs(ll a) {return a>0?a:-a;}ll mo(ll x, ll y, ll mo){ ll sgn=(x<0?-1:(x>0))*(y<0?-1:(y>0)); x=tabs(x);y=tabs(y); if(!sgn) return 0; ll n=mo; ll T=floorl(sqrtl(n)+0.5); ll t=T*T-n; ll a=x/T, b=x%T; ll c=y/T, d=y%T; ll e=a*c/T, f=a*c%T; ll v=((a*d+b*c)%n+e*t)%n; ll g=v/T, h=v%T; ll ret=(((f+g)*t%n + b*d)%n+h*T)%n; ret=(ret%n+n)%n; return ret*sgn;}ll xt[5][2],r,s;ll x,y;ll sqz(ll a,ll b){if(a>0) return (a+b-1)/b;if(a==0) return 0;return -((-a)/b);}ll xqz(ll a,ll b){if(a>0) return a/b;if(a==0) return 0;return -(-a+b-1)/b;}ll cal(ll A,ll B,ll C){ll t1=A*A+B*B;ll fm=mo(C,-A*y+B*x,t1);C=tabs(C);ll tt1,tt2;if(bigint(t1)*bigint(r*r)<bigint(C)*bigint(C)) return 0;Sqrt(bigint(t1)*bigint(r*r)-bigint(C)*bigint(C),tt1,tt2);ll kst=sqz(fm-tt1,t1),ken=xqz(fm+tt1,t1);return kst>ken?0:ken-kst+1;}int main(){ll T;scanf("%lld",&T); while(T--){int i,j;scanf("%lld",&s);for(i=0;i<3;i++){scanf("%lld %lld",&xt[i][0],&xt[i][1]);if(!i) scanf("%lld",&r);}for(i=1;i<3;i++) for(j=0;j<2;j++) xt[i][j]=xt[i][j]-xt[0][j];ll A=xt[2][1]-xt[1][1],B=xt[1][0]-xt[2][0],C=ll(xt[2][0])*xt[1][1]-ll(xt[1][0])*xt[2][1];if(A==0&&B==0){printf("0n");continue;}ll d;gcd(tabs(A),tabs(B),d,x,y);if(s%d) {printf("0n");continue;}if(A<0) x=-x;if(B<0) y=-y;A/=d;B/=d;C/=d;s/=d;ll res=cal(A,B,C+s)+cal(A,B,C-s);printf("%lldn",res);}return 0;}