 #include<iostream>
 #include<stdio.h>
 #include<string>
 #include<math.h>
 #include<iomanip>
 #include<algorithm>
 #include<string.h>
 #include<cctype>
 #include<map>
 #include<set>
 #include<vector>
 #include<sstream>
 #include<stack>
 #include<queue>
 
 using namespace std;
 
 long long int cnt(int kk,int a,int m)
 {
   long long int step=0;
   do
   {
     kk=(kk*a)%m;
     step++;          
   }while(kk!=1);
   return step;    
 }
 
 long long int gcd(int a,int b)
 {
   return b==0 ? a:gcd(b,a%b);     
 }
 
 long long int lcm(int a,int b)
 {
   return a/gcd(a,b)*b;       
 }
 
 int main()
 {
   int a1,m1,a2,m2,a3,m3;
   while(cin>>a1>>m1>>a2>>m2>>a3>>m3)
   {
     int step;
     long long int step_final;
     if(a1==0&&a2==0&&a3==0&&m1==0&&m2==0&&m3==0) break;
     else
     {
       int x=1;
       int y=1;
       int z=1;
       long long int step_x=cnt(x,a1,m1);
       long long int step_y=cnt(y,a2,m2);
       long long int step_z=cnt(z,a3,m3);
       step_final=lcm(step_x,lcm(step_y,step_z));      
     }                         
     cout<<step_final<<endl;         
   }
   //while(1);
   return 0;
 }

 