#include <stdio.h>

long long int l[100];
long long int r[100];

long long int ln[100];
long long int rn[100];

bool use[100];

long long int ko(long long int a,long long int b)
{
	while(1)
	{
		long long int w = a % b;
		if(w == 0)
		{
			return b;
		}
		a = b;
		b = w;
	}
}

long long int ju(int b)
{
	long long int ld,rd;
	if(l[b] >= 0)
	{
		ld = ju(l[b]);
	}
	else
	{
		ld = 1;
	}
	if(r[b] >= 0)
	{
		rd = ju(r[b]);
	}
	else
	{
		rd = 1;
	}
	long long int lk = ld * ln[b];
	long long int rk = rd * rn[b];
	long long int ww = ko(ld,rd);
	long long int w = ko(lk,rk);
	long long int sai = lk * rk / w;
	return sai / ln[b] + sai / rn[b];
}

int main()
{
	while(1)
	{
		int n;
		scanf("%d",&n);
		if(n == 0)
		{
			break;
		}
		for(int i = 0; i < n; i++)
		{
			int lne,rne;
			long long int lw,rw;
			scanf("%lld %lld %d %d",&lw,&rw,&lne,&rne);
			l[i] = lne - 1;
			r[i] = rne - 1;
			long long int w = ko(lw,rw);
			ln[i] = lw / w;
			rn[i] = rw / w;
		}
		for(int i = 0; i < n; i++)
		{
			use[i] = true;
		}
		for(int i = 0; i < n; i++)
		{
			if(l[i] >= 0)
			{
				use[l[i]] = false;
			}
			if(r[i] >= 0)
			{
				use[r[i]] = false;
			}
		}
		int oya;
		for(int i = 0; i < n; i++)
		{
			if(use[i])
			{
				oya = i;
				break;
			}
		}
		printf("%lld\n",ju(oya));
	}
	return 0;
}