#include <iostream>
using namespace std;

// gcd(a,b) = ax + by
long long gcd( long long a, long long* x, long long b, long long* y )
{
	long long x0=1, x1=0;
	long long y0=0, y1=1;
	long long sign=1;

	while( b != 0 )
	{
		long long r = a%b;
		long long q = a/b;
		a = b;
		b = r;

		long long tx1 = x1;
		long long ty1 = y1;
		x1 = q*x1 + x0;
		y1 = q*y1 + y0;
		x0 = tx1;
		y0 = ty1;
		sign = -sign;
	}

	if( a >= 0 )
	{
		*x =  sign * x0;
		*y = -sign * y0;
		return a;
	}
	else
	{
		*x = -sign * x0;
		*y =  sign * y0;
		return -a;
	}
}

long long mod( long long a, long long b )
{
	long long m = a % b;
	return m>=0 ? m : m+b;
}

int main() {
	for(int n; cin>>n,n;) {
		long long R=0, M=1; // cur constraint : (==R mod M)
		for(long long N=1,S; N<=n; ++N) {
			cin >> S;       // new constraint : (==S mod N)

			// composition:
			//   R+pM == S+qN
			//   pM == S-R mod N
			//   p == (S-R)%N / gcd * x
			long long x, y, gcd_MN=gcd(M,&x,N,&y), lcm_MN=M*(N/gcd_MN);
			R = mod(R+mod(S-R, N)/gcd_MN*x*M, lcm_MN);
			M = lcm_MN;
		}
		cout << R << endl;
	}
}