// この問題これで十分だた! #include using namespace std; long long gcd( long long a, long long b ) { return a ? gcd(b%a,a) : b; } long long lcm( long long a, long long b ) { return a / gcd(a,b) * b; } int main() { for(int n; cin>>n,n;) { long long R=0, M=1; // 現在の制約 (==R mod M) for(long long N=1,S; N<=n; ++N) { cin >> S; // 新たなる制約 (==S mod N) for(long long i=0; i!=N; ++i) if( (M*i+R) % N == S ) // (Mi+R == Nj+S) になるiを探す { R = M*i+R; M = lcm(M,N); break; } } cout << R << endl; } }