//用中国剩余定理解决韩信点兵问题
#include <stdio.h>
long long max,x,m[8],b[8],M[8],n,N;
int p[8];
int main()
{
int i,j,k;
for(n=1,i=0; i<8; i++)
{scanf("%lld",&m[i]); n=n*m[i];} //读入除数数组,注意n,为所以除数的乘积
/***************检验n和m[]数组***************/
//printf("%lld\n",n);
//for(i=0; i<8; i++)
// printf("%lld ",m[i]);
//printf("\n"); //成功
/***************检验n和m[]数组***************/
for(i=0; i<8; i++)
scanf("%lld",&b[i]); //读入余数数组
for(i=0; i<8; i++)
M[i]=n/m[i]; //保存M数组
/****************检验b[]和M[]数组*******************/
//for(i=0 ; i<8; i++)
// printf("%lld %lld\n",b[i],M[i]);
//printf("\n"); //成功
/****************检验b[]和M[]数组*******************/
for(i=0; i<8; i++)
{
for(k=1; ;k++)
if( (k*M[i])%m[i]==1)
{p[i]=k; break;}
}
/*******************输出p[]数组验证*******************************/
//for(i=0; i<8; i++) printf("%lld ",p[i]); printf("\n");
/*******************输出p[]数组验证*******************************/
for(N=0,i=0; i<8; i++)
N=(N+p[i]*M[i]*b[i]);
//printf("%lld\n",N);
//printf("%lld\n",n);
x=N%n;
for(max=m[0],i=0; i<8; i++)
{
if(m[i]>max) max=m[i];
}
if(x<max) x=x+n;
printf("%lld\n",x);
/*for(N=0,i=0; i<8; i++)
N=N+p[i]*M[i]*b[i];
x=N%n;
printf("%lld\n",x);*/
return 0;
}