#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define pb push_back #define all(a) a.begin(),a.end() #define pointtype double #define pointtype_INT 0 using namespace std; using namespace tr1; typedef long long LL; typedef pairpii; typedef unsigned uint; typedef unsigned long long uLL; const double pi=acos(-1); template void Read(T &x){ char c; bool f(0); while(c=getchar(),c!=EOF){ if(c=='-') f=1; else if(c>='0'&&c<='9'){ x=c-'0'; while(c=getchar(),c>='0'&&c<='9') x=x*10+c-'0'; ungetc(c,stdin); if(f) x=-x; return; } } } struct point{ pointtype x,y; inline point(){ } inline point(pointtype x,pointtype y=0):x(x),y(y){ } inline point operator+(const point &a)const{ return point(x+a.x,y+a.y); } inline point operator+=(const point &a){ return *this=*this+a; } inline point operator-(const point &a)const{ return point(x-a.x,y-a.y); } inline point operator-=(const point &a){ return *this=*this-a; } inline bool operator<(const point &b)const{ if(x==b.x) return y struct hashnode{ T val; T2 v; hashnode *next; }; template inline int& addhash(int u,const T &val,T2 *&ecnt,T2 **adj){ T2 *p=++ecnt; p->val=val; p->v=0; p->next=adj[u]; adj[u]=p; return p->v; } template class hash_table{ hashnode*adj[MOD],edge[ss+10],*ecnt; int sz; public: inline int Get_val(int x){ return x%MOD; } #if pointtype_INT==1 inline int Get_val(point x){ return (x.x*998244353ll+x.y)%MOD; } #endif inline hash_table():ecnt(edge),sz(0){ for(int i=0;i* hash(const T &x){ int t=Get_val(x); for(hashnode *p=adj[t];p;p=p->next) if(p->val==x) return p; return 0; } inline int &operator[](const T &x){ hashnode *p=hash(x); if(p) return p->v; return ++sz,addhash(Get_val(x)%MOD,x,ecnt,adj); } inline bool count(const T &x){ return hash(x); } inline void clear(){ ecnt=edge; int t=MOD>>2<<2,i; for(i=0;i struct Matrix{ int a[sz][sz]; inline Matrix(){ memset(a,0,sizeof a); } inline Matrix(int){ memset(a,0,sizeof a); for(int i=0;i>=1; } return ret; } }; struct cpx{ double r,i; inline cpx(){ } inline cpx(double r,double i=0):r(r),i(i){ } inline cpx operator+(const cpx &a)const{ return cpx(r+a.r,i+a.i); } inline cpx operator-(const cpx &a)const{ return cpx(r-a.r,i-a.i); } inline cpx operator*(const cpx &a)const{ return cpx(r*a.r-i*a.i,r*a.i+i*a.r); } inline cpx operator/(const double &a)const{ return cpx(r/a,i/a); } inline cpx operator/(const cpx&a)const{ return *this*cpx(a.r,-a.i)/(a.r*a.r+a.i*a.i); } inline cpx operator+=(const cpx &a){ return *this=*this+a; } inline cpx operator-=(const cpx &a){ return *this=*this-a; } inline cpx operator*=(const cpx &a){ return *this=*this*a; } inline cpx operator/=(const cpx &a){ return *this=*this/a; } inline cpx conj(){ return cpx(r,-i); } }; template struct polynomial{ T a[len]; inline void clear(){ int t=len>>2<<2,i; for(i=0;i>2<<2,i; for(i=0;i>2<<2,i; for(i=0;i>=1,~j&t;); if(i,class cmp=std::less > struct priority_queue{ std::priority_queueins,del; inline void push(T a){ ins.push(a); } inline void erase(T a){ del.push(a); } inline void pop(){ while(!del.empty()&&ins.top()==del.top()) ins.pop(),del.pop(); ins.pop(); } inline T top(){ while(!del.empty()&&ins.top()==del.top()) ins.pop(),del.pop(); return ins.top(); } inline T second_top(){ T tmp=top(),ret; pop(); ret=top(); push(tmp); return ret; } inline void clear(){ while(!ins.empty()) ins.pop(); while(!del.empty()) del.pop(); } inline int size(){ return ins.size()-del.size(); } inline bool empty(){ return !size(); } }; } void exgcd(long long a,long long b,long long &d,long long &x,long long &y){ if(!b){ d=a; x=1; y=0; return; } exgcd(b,a%b,d,y,x); y-=a/b*x; } //template #define MAXN 1000 int a[MAXN+10],b[MAXN+10]; int T,n; int main() { Read(T); while(T--){ Read(n); int i; for(i=1;i<=n;i++) Read(a[i]); for(i=1;i<=n;i++) Read(b[i]); for(i=n;i;i--){ if(a[i]||b[i]){ int d=__gcd(a[i],b[i]); printf("%d/%d\n",a[i]/d,b[i]/d); break; } } } }