#include <iostream>
#include <stack>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <string>
#include <vector>
#include <numeric>

#define rep(x,to) for(int x=0;x<to;x++)
#define rep2(x,from,to) for(int x=from;x<to;x++)

using namespace std;

//最大公約数 GCD
long long gcd( long long x, long long y ){
    int r;
    if ( x < y ) swap( x, y );
    
    while ( y > 0 ){
        r = x % y;
        x = y;
        y = r;
    }
    return x;
}
//最小公倍数 LCM
long long lcm(long long x, long long y){

    return (x * y / gcd(x, y));
}


int main(void){

long long a[3],m[3];

	while(!cin.eof()){
		
		rep(i,3) cin >> a[i] >> m[i];
		if(accumulate(a,a+3,0)+accumulate(m,m+3,0)==0) break;

		long long x[3]={1,1,1}, ct[3]={0},cnt=1;
		
		rep(k,3){
			while(1){
				x[k] = a[k]*x[k]%m[k];
				ct[k]++;
				if(x[k]==1) break;
			}
		}
//		printf("%d:%d:%d, \n",ct[0],ct[1],ct[2]);
		
		cout << lcm(lcm(ct[0],ct[1]),ct[2]) << endl;
	}

	return 0;
	
}