#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

typedef long long ll;

ll gcd(ll a,ll b){
	if(b==0)
		return a;
	else
		return gcd(b,a%b);
}

ll lcm(ll a,ll b){
	return a*b/(gcd(a,b));
}

int main(){
	int a[3],m[3];
	while(cin>>a[0]>>m[0]>>a[1]>>m[1]>>a[2]>>m[2]&&!(a[0]==0&&a[1]==0&&a[2]==0&&m[0]==0&&m[1]==0&&m[2]==0)){
		int x,y,z;
		x=y=z=1;
		ll cnt=1;
		int nx=(a[0]*x)%m[0];
		int ny=(a[1]*y)%m[1];
		int nz=(a[2]*z)%m[2];
		x=nx,y=ny,z=nz;

		while(1){
			if(x==1)
				break;
			nx=(a[0]*x)%m[0];
			x=nx;
			cnt++;
		}
		int xLoop=cnt;
		cnt=1;
		while(1){
			if(y==1)
				break;
			ny=(a[1]*y)%m[1];
			y=ny;
			cnt++;
		}
		int yLoop=cnt;
		cnt=1;
		while(1){
			if(z==1)
				break;
			nz=(a[2]*z)%m[2];
			z=nz;
			cnt++;
		}
		int zLoop=cnt;

		ll ret=lcm(zLoop,lcm(xLoop,yLoop));
		cout<<ret<<endl;

		//while(1){
		//	if(x==1&&y==1&&z==1){
		//		break;
		//	}
		//	nx=(a[0]*x)%m[0];
		//	ny=(a[1]*y)%m[1];
		//	nz=(a[2]*z)%m[2];
		//	x=nx,y=ny,z=nz;
		//	cnt++;
		//}
		//cout<<cnt<<endl;
	}

	return 0;
}